diff --git a/encoding.go b/encoding.go index 69581d6..31028fa 100644 --- a/encoding.go +++ b/encoding.go @@ -97,6 +97,10 @@ func (e encoder) writeMessage(buf *buffer, level slog.Level, msg string) { } func (e encoder) writeAttr(buf *buffer, a slog.Attr, group string) { + // Elide empty Attrs. + if a.Equal(slog.Attr{}) { + return + } value := a.Value.Resolve() if value.Kind() == slog.KindGroup { subgroup := a.Key diff --git a/handler_test.go b/handler_test.go index ed7d55d..1d92d3c 100644 --- a/handler_test.go +++ b/handler_test.go @@ -62,6 +62,8 @@ func TestHandler_Attr(t *testing.T) { slog.Any("err", errors.New("the error")), slog.Any("stringer", theStringer{}), slog.Any("nostringer", noStringer{Foo: "bar"}), + slog.Attr{}, + slog.Any("", nil), ) AssertNoError(t, h.Handle(context.Background(), rec))