From 115ca6a018470a23f891097f2e440838119a3c86 Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Fri, 29 Nov 2024 15:34:02 +0300 Subject: [PATCH] logger: add WithAddFields option Signed-off-by: Vasiliy Tolstov --- logger/options.go | 7 +++++++ logger/slog/slog_test.go | 28 ++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/logger/options.go b/logger/options.go index ede9a23b..a1a71048 100644 --- a/logger/options.go +++ b/logger/options.go @@ -80,6 +80,13 @@ func WithContextAttrFuncs(fncs ...ContextAttrFunc) Option { } } +// WithAddFields add fields for the logger +func WithAddFields(fields ...interface{}) Option { + return func(o *Options) { + o.Fields = append(o.Fields, fields...) + } +} + // WithFields set default fields for the logger func WithFields(fields ...interface{}) Option { return func(o *Options) { diff --git a/logger/slog/slog_test.go b/logger/slog/slog_test.go index d27de0f0..ba9b69ba 100644 --- a/logger/slog/slog_test.go +++ b/logger/slog/slog_test.go @@ -15,6 +15,34 @@ import ( "go.unistack.org/micro/v3/logger" ) +func TestWithAddFields(t *testing.T) { + ctx := context.TODO() + buf := bytes.NewBuffer(nil) + l := NewLogger(logger.WithLevel(logger.InfoLevel), logger.WithOutput(buf)) + if err := l.Init(); err != nil { + t.Fatal(err) + } + + l.Info(ctx, "msg1") + + if err := l.Init(logger.WithAddFields("key1", "val1")); err != nil { + t.Fatal(err) + } + l.Info(ctx, "msg2") + + if err := l.Init(logger.WithAddFields("key2", "val2")); err != nil { + t.Fatal(err) + } + l.Info(ctx, "msg3") + + if !bytes.Contains(buf.Bytes(), []byte(`"key1"`)) { + t.Fatalf("logger error not works, buf contains: %s", buf.Bytes()) + } + if !bytes.Contains(buf.Bytes(), []byte(`"key2"`)) { + t.Fatalf("logger error not works, buf contains: %s", buf.Bytes()) + } +} + func TestMultipleFieldsWithLevel(t *testing.T) { ctx := context.TODO() buf := bytes.NewBuffer(nil)