From a125e8196f52cc812a4a45e8ec275bc286b3d32f Mon Sep 17 00:00:00 2001 From: Simon Paredes Date: Fri, 10 Nov 2023 20:13:40 -0300 Subject: [PATCH] Do not print empty Attr This is described in Handler.Handle method: If an Attr's key and value are both the zero value, ignore the Attr. --- encoding.go | 4 ++++ handler_test.go | 2 ++ 2 files changed, 6 insertions(+) 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))