Skip to content

Commit a4f66ba

Browse files
committed
Ensure stackdriver labels are respected
1 parent 4209e29 commit a4f66ba

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

sloggers/slogstackdriver/slogstackdriver.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,21 @@ type Config struct {
2727
//
2828
// See https://cloud.google.com/logging/docs/agent
2929
func Make(w io.Writer, config *Config) slog.Logger {
30+
if config == nil {
31+
config = &Config{}
32+
}
3033
projectID, _ := metadata.ProjectID()
3134

3235
return slog.Make(stackdriverSink{
3336
projectID: projectID,
3437
w: syncwriter.New(w),
38+
labels: config.Labels,
3539
})
3640
}
3741

3842
type stackdriverSink struct {
3943
projectID string
44+
labels slog.Map
4045
w *syncwriter.Writer
4146
}
4247

@@ -67,6 +72,10 @@ func (s stackdriverSink) LogEntry(ctx context.Context, ent slog.SinkEntry) error
6772
)
6873
}
6974

75+
if len(s.labels) > 0 {
76+
e = append(e, slog.F("logging.googleapis.com/labels", s.labels))
77+
}
78+
7079
e = append(e, ent.Fields...)
7180

7281
buf, _ := json.Marshal(e)

sloggers/slogstackdriver/slogstackdriver_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,14 @@ func TestStackdriver(t *testing.T) {
2424

2525
ctx, s := trace.StartSpan(bg, "meow")
2626
b := &bytes.Buffer{}
27-
l := slogstackdriver.Make(b, nil)
27+
l := slogstackdriver.Make(b, &slogstackdriver.Config{
28+
Labels: slog.M(slog.F("label", 2)),
29+
})
2830
l = l.Named("meow")
2931
l.Error(ctx, "line1\n\nline2", slog.F("wowow", "me\nyou"))
3032

3133
j := slogfmt.FilterJSONField(b.String(), "timestamp")
32-
exp := fmt.Sprintf(`{"severity":"ERROR","message":"line1\n\nline2","logging.googleapis.com/sourceLocation":"file:\"%v\" line:29 function:\"cdr.dev/slog/sloggers/slogstackdriver_test.TestStackdriver\" ","logging.googleapis.com/operation":"producer:\"meow\" ","logging.googleapis.com/trace":"projects//traces/%v","logging.googleapis.com/spanId":"%v","logging.googleapis.com/trace_sampled":false,"wowow":"me\nyou"}
34+
exp := fmt.Sprintf(`{"severity":"ERROR","message":"line1\n\nline2","logging.googleapis.com/sourceLocation":"file:\"%v\" line:31 function:\"cdr.dev/slog/sloggers/slogstackdriver_test.TestStackdriver\" ","logging.googleapis.com/operation":"producer:\"meow\" ","logging.googleapis.com/trace":"projects//traces/%v","logging.googleapis.com/spanId":"%v","logging.googleapis.com/trace_sampled":false,"logging.googleapis.com/labels":{"label":2},"wowow":"me\nyou"}
3335
`, slogstackdriverTestFile, s.SpanContext().TraceID, s.SpanContext().SpanID)
3436
assert.Equal(t, exp, j, "entry")
3537
}

0 commit comments

Comments
 (0)