Skip to content

Commit f0a5755

Browse files
authored
Add Context to logging for JSON and TEXT formats (#7705)
allow source output from text and json
1 parent d086e41 commit f0a5755

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

cmd/nginx-ingress/main.go

+18-2
Original file line numberDiff line numberDiff line change
@@ -1156,13 +1156,29 @@ func logEventAndExit(ctx context.Context, eventLog record.EventRecorder, obj pkg
11561156
func initLogger(logFormat string, level slog.Level, out io.Writer) context.Context {
11571157
programLevel := new(slog.LevelVar) // Info by default
11581158
var h slog.Handler
1159+
1160+
opts := &slog.HandlerOptions{
1161+
Level: programLevel,
1162+
AddSource: true,
1163+
ReplaceAttr: func(_ []string, a slog.Attr) slog.Attr {
1164+
if a.Key == slog.SourceKey {
1165+
if src, ok := a.Value.Any().(*slog.Source); ok {
1166+
src.Function = ""
1167+
src.File = filepath.Base(src.File)
1168+
a.Value = slog.AnyValue(src)
1169+
}
1170+
}
1171+
return a
1172+
},
1173+
}
1174+
11591175
switch {
11601176
case logFormat == "glog":
11611177
h = nic_glog.New(out, &nic_glog.Options{Level: programLevel})
11621178
case logFormat == "json":
1163-
h = slog.NewJSONHandler(out, &slog.HandlerOptions{Level: programLevel})
1179+
h = slog.NewJSONHandler(out, opts)
11641180
case logFormat == "text":
1165-
h = slog.NewTextHandler(out, &slog.HandlerOptions{Level: programLevel})
1181+
h = slog.NewTextHandler(out, opts)
11661182
default:
11671183
h = nic_glog.New(out, &nic_glog.Options{Level: programLevel})
11681184
}

cmd/nginx-ingress/main_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@ func TestLogFormats(t *testing.T) {
3030
{
3131
name: "json format message",
3232
format: "json",
33-
wantre: `^{"time":"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d+.*","level":"INFO","msg":".*}`,
33+
wantre: `^{"time":"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d+.*","level":"INFO","source":\{"file":"[^"]+\.go","line":\d+\},"msg":".*}`,
3434
},
3535
{
3636
name: "text format message",
3737
format: "text",
38-
wantre: `^time=\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d+.*level=\w+\smsg=\w+`,
38+
wantre: `^time=\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d+.*level=\w+\ssource=[^:]+\.go:\d+\smsg=\w+`,
3939
},
4040
}
4141
t.Parallel()

0 commit comments

Comments
 (0)