From 238da2c525a9bbf3c8d09e153e1348d09ff0ecde Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Sun, 30 Jul 2023 21:21:46 +0200 Subject: [PATCH] log: make Fields type a generic map[string]any Decouple it from logrus, but with the same type. Signed-off-by: Sebastiaan van Stijn --- log/context.go | 2 +- log/context_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/log/context.go b/log/context.go index 4767e9347..c3af05280 100644 --- a/log/context.go +++ b/log/context.go @@ -29,7 +29,7 @@ var L = logrus.NewEntry(logrus.StandardLogger()) type loggerKey struct{} // Fields type to pass to "WithFields". -type Fields = logrus.Fields +type Fields = map[string]any // Entry is a logging entry. It contains all the fields passed with // [Entry.WithFields]. It's finally logged when Trace, Debug, Info, Warn, diff --git a/log/context_test.go b/log/context_test.go index c641aea65..1b6d4a6cf 100644 --- a/log/context_test.go +++ b/log/context_test.go @@ -20,6 +20,8 @@ import ( "context" "reflect" "testing" + + "github.com/sirupsen/logrus" ) func TestLoggerContext(t *testing.T) { @@ -35,3 +37,27 @@ func TestLoggerContext(t *testing.T) { t.Errorf("should be the same: %+v, %+v", a, b) } } + +func TestCompat(t *testing.T) { + expected := Fields{ + "hello1": "world1", + "hello2": "world2", + "hello3": "world3", + } + + l := G(context.TODO()) + l = l.WithFields(logrus.Fields{"hello1": "world1"}) + l = l.WithFields(Fields{"hello2": "world2"}) + l = l.WithFields(map[string]any{"hello3": "world3"}) + if !reflect.DeepEqual(Fields(l.Data), expected) { + t.Errorf("expected: (%[1]T) %+[1]v, got: (%[2]T) %+[2]v", expected, l.Data) + } + + l2 := L + l2 = l2.WithFields(logrus.Fields{"hello1": "world1"}) + l2 = l2.WithFields(Fields{"hello2": "world2"}) + l2 = l2.WithFields(map[string]any{"hello3": "world3"}) + if !reflect.DeepEqual(Fields(l2.Data), expected) { + t.Errorf("expected: (%[1]T) %+[1]v, got: (%[2]T) %+[2]v", expected, l2.Data) + } +}