From b7829def1d824d1d7aae4a4b3c3465277faf437f Mon Sep 17 00:00:00 2001 From: Matthew Sykes Date: Wed, 12 Dec 2018 13:44:18 -0500 Subject: [PATCH] Avoid extra space when fields are added to encoder --- encoder.go | 4 +++- encoder_test.go | 24 +++++++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/encoder.go b/encoder.go index 67fe435..b929d86 100644 --- a/encoder.go +++ b/encoder.go @@ -301,7 +301,9 @@ func (enc *logfmtEncoder) EncodeEntry(ent zapcore.Entry, fields []zapcore.Field) final.AppendString(ent.Message) } if enc.buf.Len() > 0 { - final.buf.AppendByte(' ') + if final.buf.Len() > 0 { + final.buf.AppendByte(' ') + } final.buf.Write(enc.buf.Bytes()) } addFields(final, fields) diff --git a/encoder_test.go b/encoder_test.go index 5417227..f11bcbd 100644 --- a/encoder_test.go +++ b/encoder_test.go @@ -104,7 +104,7 @@ func assertOutput(t testing.TB, desc string, expected string, f func(zapcore.Enc f(enc) expectedPrefix := `foo=bar` if expected != "" { - // If we expect output, it should be comma-separated from the previous + // If we expect output, it should be space-separated from the previous // field. expectedPrefix += " " } @@ -189,3 +189,25 @@ main.main() assert.Equal(t, `k=v stacktrace="panic: an unexpected error occurred\n\ngoroutine 1 [running]:\nmain.main()\n\t\t/go/src/github.com/jsternberg/myawesomeproject/h2g2.go:4 +0x39\n" `, buf.String()) } + +func TestEncodeEntryWithAddedField(t *testing.T) { + enc := &logfmtEncoder{buf: bufferpool.Get(), EncoderConfig: &zapcore.EncoderConfig{ + EncodeTime: zapcore.EpochTimeEncoder, + EncodeDuration: zapcore.SecondsDurationEncoder, + }} + enc.AddString("x", "y") + + buf, err := enc.EncodeEntry( + zapcore.Entry{ + Level: zapcore.DebugLevel, + Time: time.Time{}, + LoggerName: "test", + Message: "message", + }, + []zapcore.Field{ + zap.String("k", "v"), + }, + ) + assert.NoError(t, err) + assert.Equal(t, "x=y k=v\n", buf.String()) +}