diff --git a/log/record.go b/log/record.go index 4d2f32d0fb0..de40773dbd9 100644 --- a/log/record.go +++ b/log/record.go @@ -142,3 +142,11 @@ func (r *Record) AddAttributes(attrs ...KeyValue) { func (r *Record) AttributesLen() int { return r.nFront + len(r.back) } + +// 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 { + res := *r + res.back = slices.Clone(r.back) + return res +}