From b69cd736717f6140905aa4af65692da030c06e2b Mon Sep 17 00:00:00 2001 From: "nurhidayat.haidir" Date: Tue, 15 Jul 2025 15:37:04 +0700 Subject: [PATCH] fix: isolate log context fields to prevent upstream leakage --- loggers/fields.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/loggers/fields.go b/loggers/fields.go index a5446e3..f5077a3 100644 --- a/loggers/fields.go +++ b/loggers/fields.go @@ -31,15 +31,18 @@ func (o *LogFields) Del(key string) { // AddToLogContext adds log fields to context. // Any info added here will be added to all logs using this context func AddToLogContext(ctx context.Context, key string, value interface{}) context.Context { - data := FromContext(ctx) - if data == nil { - ctx = context.WithValue(ctx, contextKey, new(LogFields)) - data = FromContext(ctx) + existingFields := FromContext(ctx) + newFields := &LogFields{} + + if existingFields != nil { + existingFields.Range(func(key, value interface{}) bool { + newFields.Add(key.(string), value) + return true + }) } - if data != nil { - data.Add(key, value) - } - return ctx + + newFields.Add(key, value) + return context.WithValue(ctx, contextKey, newFields) } // FromContext fetchs log fields from provided context