const nAttrsInline … type Record … // NewRecord creates a [Record] from the given arguments. // Use [Record.AddAttrs] to add attributes to the Record. // // NewRecord is intended for logging APIs that want to support a [Handler] as // a backend. func NewRecord(t time.Time, level Level, msg string, pc uintptr) Record { … } // Clone returns a copy of the record with no shared state. // The original record and the clone can both be modified // without interfering with each other. func (r Record) Clone() Record { … } // NumAttrs returns the number of attributes in the [Record]. func (r Record) NumAttrs() int { … } // Attrs calls f on each Attr in the [Record]. // Iteration stops if f returns false. func (r Record) Attrs(f func(Attr) bool) { … } // AddAttrs appends the given Attrs to the [Record]'s list of Attrs. // It omits empty groups. func (r *Record) AddAttrs(attrs ...Attr) { … } // Add converts the args to Attrs as described in [Logger.Log], // then appends the Attrs to the [Record]'s list of Attrs. // It omits empty groups. func (r *Record) Add(args ...any) { … } // countAttrs returns the number of Attrs that would be created from args. func countAttrs(args []any) int { … } const badKey … // argsToAttr turns a prefix of the nonempty args slice into an Attr // and returns the unconsumed portion of the slice. // If args[0] is an Attr, it returns it. // If args[0] is a string, it treats the first two elements as // a key-value pair. // Otherwise, it treats args[0] as a value with a missing key. func argsToAttr(args []any) (Attr, []any) { … } type Source … // group returns the non-zero fields of s as a slice of attrs. // It is similar to a LogValue method, but we don't want Source // to implement LogValuer because it would be resolved before // the ReplaceAttr function was called. func (s *Source) group() Value { … } // source returns a Source for the log event. // If the Record was created without the necessary information, // or if the location is unavailable, it returns a non-nil *Source // with zero fields. func (r Record) source() *Source { … }