From d2a97b366b4588420e5159fdd3e4612b0048aa35 Mon Sep 17 00:00:00 2001 From: wphan Date: Fri, 20 Dec 2019 09:34:21 -0800 Subject: [PATCH] fix ConsoleWriter for TimeFormatMicro (#206) --- console.go | 6 +++++- console_test.go | 22 ++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/console.go b/console.go index 75f6e45..54f7994 100644 --- a/console.go +++ b/console.go @@ -300,9 +300,13 @@ func consoleDefaultFormatTimestamp(timeFormat string, noColor bool) Formatter { t = tt.String() } else { var sec, nsec int64 = i, 0 - if TimeFieldFormat == TimeFormatUnixMs { + switch TimeFieldFormat { + case TimeFormatUnixMs: nsec = int64(time.Duration(i) * time.Millisecond) sec = 0 + case TimeFormatUnixMicro: + nsec = int64(time.Duration(i) * time.Microsecond) + sec = 0 } ts := time.Unix(sec, nsec).UTC() t = ts.Format(timeFormat) diff --git a/console_test.go b/console_test.go index 4567e9e..751cdcd 100644 --- a/console_test.go +++ b/console_test.go @@ -165,6 +165,28 @@ func TestConsoleWriter(t *testing.T) { } }) + t.Run("Unix timestamp us input format", func(t *testing.T) { + of := zerolog.TimeFieldFormat + defer func() { + zerolog.TimeFieldFormat = of + }() + zerolog.TimeFieldFormat = zerolog.TimeFormatUnixMicro + + buf := &bytes.Buffer{} + w := zerolog.ConsoleWriter{Out: buf, TimeFormat: time.StampMicro, NoColor: true} + + _, err := w.Write([]byte(`{"time": 1234567891, "level": "debug", "message": "Foobar", "foo": "bar"}`)) + if err != nil { + t.Errorf("Unexpected error when writing output: %s", err) + } + + expectedOutput := "Jan 1 00:20:34.567891 DBG Foobar foo=bar\n" + actualOutput := buf.String() + if actualOutput != expectedOutput { + t.Errorf("Unexpected output %q, want: %q", actualOutput, expectedOutput) + } + }) + t.Run("No message field", func(t *testing.T) { buf := &bytes.Buffer{} w := zerolog.ConsoleWriter{Out: buf, NoColor: true}