diff --git a/log/log.go b/log/log.go index 06fa37e..25f719a 100644 --- a/log/log.go +++ b/log/log.go @@ -391,7 +391,7 @@ func (l *Logger) log(level Lvl, format string, args ...interface{}) { if err == nil { s := buf.String() i := buf.Len() - 1 - if s[i] == '}' { + if i >= 0 && s[i] == '}' { // JSON header buf.Truncate(i) buf.WriteByte(',') @@ -404,7 +404,9 @@ func (l *Logger) log(level Lvl, format string, args ...interface{}) { } } else { // Text header - buf.WriteByte(' ') + if len(s) > 0 { + buf.WriteByte(' ') + } buf.WriteString(message) } buf.WriteByte('\n') diff --git a/log/log_test.go b/log/log_test.go index 314d9d1..78d3204 100644 --- a/log/log_test.go +++ b/log/log_test.go @@ -119,6 +119,16 @@ func TestStringWithQuotes(t *testing.T) { assert.Contains(t, b.String(), `"message":"Content-Type: \"\""`) } +func TestEmptyHeader(t *testing.T) { + l := New("test") + b := new(bytes.Buffer) + l.SetOutput(b) + l.SetHeader("") + l.SetLevel(DEBUG) + l.Debugf("captain's log") + assert.Contains(t, b.String(), `captain's log`) +} + func BenchmarkLog(b *testing.B) { l := New("test") l.SetOutput(new(bytes.Buffer))