Skip to content

Commit 9c62d23

Browse files
authored
Merge pull request #139 from netlify/set_final_field_with_context
Set final field with context.
2 parents 0264e6b + 0a00bcb commit 9c62d23

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

tracing/logging.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,15 @@ func SetLogFields(r *http.Request, fields logrus.Fields) logrus.FieldLogger {
6363
// SetFinalField will add a field to the canonical line created at in Finish. It will add
6464
// it to this line, but not every log line in between
6565
func SetFinalField(r *http.Request, key string, value interface{}) logrus.FieldLogger {
66-
entry := GetTracer(r)
66+
return SetFinalFieldWithContext(r.Context(), key, value)
67+
}
68+
69+
// SetFinalFieldWithContext will add a field to the canonical line created at in Finish. It will add
70+
// it to this line, but not every log line in between
71+
func SetFinalFieldWithContext(ctx context.Context, key string, value interface{}) logrus.FieldLogger {
72+
entry := GetFromContext(ctx)
6773
if entry == nil {
6874
return logrus.StandardLogger().WithField(key, value)
6975
}
70-
71-
entry.FinalFields[key] = value
72-
return entry.FieldLogger.WithField(key, value)
76+
return entry.SetFinalField(key, value)
7377
}

tracing/req_tracer.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ type RequestTracer struct {
1313
logrus.FieldLogger
1414

1515
RequestID string
16-
FinalFields map[string]interface{}
16+
finalFields map[string]interface{}
1717

1818
remoteAddr string
1919
method string
@@ -42,7 +42,7 @@ func NewTracer(w http.ResponseWriter, r *http.Request, log logrus.FieldLogger, s
4242
span: span,
4343
trackingWriter: trackWriter,
4444
FieldLogger: log,
45-
FinalFields: make(map[string]interface{}),
45+
finalFields: make(map[string]interface{}),
4646
}
4747
r = WrapWithTracer(r, rt)
4848

@@ -63,7 +63,7 @@ func (rt *RequestTracer) Finish() {
6363
dur := time.Since(rt.start)
6464

6565
fields := logrus.Fields{}
66-
for k, v := range rt.FinalFields {
66+
for k, v := range rt.finalFields {
6767
fields[k] = v
6868
}
6969

@@ -87,3 +87,8 @@ func (rt *RequestTracer) SetLogFields(fields logrus.Fields) logrus.FieldLogger {
8787
rt.FieldLogger = rt.FieldLogger.WithFields(fields)
8888
return rt.FieldLogger
8989
}
90+
91+
func (rt *RequestTracer) SetFinalField(key string, value interface{}) logrus.FieldLogger {
92+
rt.finalFields[key] = value
93+
return rt.FieldLogger.WithField(key, value)
94+
}

0 commit comments

Comments
 (0)