diff --git a/loggers/slog/context.go b/loggers/slog/context.go index e44c8f3..4bc4338 100644 --- a/loggers/slog/context.go +++ b/loggers/slog/context.go @@ -154,6 +154,9 @@ func (c *Context) MACAddr(key string, macAddr net.HardwareAddr) types.Context { } func (c *Context) Err(err error) types.Context { + if err == nil { + return c + } c.attrs = append(c.attrs, slog.Attr{ Key: "error", Value: slog.StringValue(err.Error()), diff --git a/loggers/slog/event.go b/loggers/slog/event.go index 2a159ab..1e0f388 100644 --- a/loggers/slog/event.go +++ b/loggers/slog/event.go @@ -153,6 +153,9 @@ func (e *Event) MACAddr(key string, macAddr net.HardwareAddr) types.Event { } func (e *Event) Err(err error) types.Event { + if err == nil { + return e + } e.attr = append(e.attr, slog.Attr{ Key: types.ErrorKey, Value: slog.StringValue(err.Error()), diff --git a/logging_test.go b/logging_test.go index cbad27f..7d24783 100644 --- a/logging_test.go +++ b/logging_test.go @@ -87,6 +87,29 @@ func TestInfo(t *testing.T) { }) }) + t.Run("nil", func(t *testing.T) { + t.Run("noop", func(t *testing.T) { + out := &bytes.Buffer{} + log := New(Noop, t.Name(), out) + log.Error().Err(nil).Msg("test") + assert.Equal(t, "", out.String()) + }) + + t.Run("zerolog", func(t *testing.T) { + out := &bytes.Buffer{} + log := New(Zerolog, t.Name(), out) + log.Error().Err(nil).Msg("test") + assert.Equal(t, fillZerologTestFields(t, "{\"level\":\"error\",\"time\":\"%s\",\"source\":\"%s\",\"message\":\"test\"}\n"), out.String()) + }) + + t.Run("slog", func(t *testing.T) { + out := &bytes.Buffer{} + log := New(Slog, t.Name(), out) + log.Error().Err(nil).Msg("test") + assert.Equal(t, fillSlogTestFields(t, "level=ERROR msg=test source=%s\n"), out.String()) + }) + }) + t.Run("one-field", func(t *testing.T) { t.Run("noop", func(t *testing.T) { out := &bytes.Buffer{}