From 28ce35565675fbb7cef202b283d65826bf514a71 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 25 Feb 2021 11:27:49 +0400 Subject: [PATCH] libs/log: [JSON format] include timestamp (bp #6174) (#6179) Closes #6146 --- CHANGELOG_PENDING.md | 2 ++ libs/cli/flags/log_level_test.go | 2 +- libs/log/filter_test.go | 6 +++--- libs/log/tm_json_logger.go | 11 ++++++++++- libs/log/tracing_logger_test.go | 2 +- 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index 5ddecfa10..683b5c4a2 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -22,6 +22,8 @@ Friendly reminder, we have a [bug bounty program](https://hackerone.com/tendermi ### IMPROVEMENTS +- [libs/log] \#6174 Include timestamp (`ts` field; `time.RFC3339Nano` format) in JSON logger output (@melekes) + ### BUG FIXES - [ABCI] \#6124 Fixes a panic condition during callback execution in `ReCheckTx` during high tx load. (@alexanderbez) diff --git a/libs/cli/flags/log_level_test.go b/libs/cli/flags/log_level_test.go index c4c1707b5..9d1b24009 100644 --- a/libs/cli/flags/log_level_test.go +++ b/libs/cli/flags/log_level_test.go @@ -15,7 +15,7 @@ const ( func TestParseLogLevel(t *testing.T) { var buf bytes.Buffer - jsonLogger := log.NewTMJSONLogger(&buf) + jsonLogger := log.NewTMJSONLoggerNoTS(&buf) correctLogLevels := []struct { lvl string diff --git a/libs/log/filter_test.go b/libs/log/filter_test.go index 06cba762b..b2ba18394 100644 --- a/libs/log/filter_test.go +++ b/libs/log/filter_test.go @@ -58,7 +58,7 @@ func TestVariousLevels(t *testing.T) { tc := tc t.Run(tc.name, func(t *testing.T) { var buf bytes.Buffer - logger := log.NewFilter(log.NewTMJSONLogger(&buf), tc.allowed) + logger := log.NewFilter(log.NewTMJSONLoggerNoTS(&buf), tc.allowed) logger.Debug("here", "this is", "debug log") logger.Info("here", "this is", "info log") @@ -74,7 +74,7 @@ func TestVariousLevels(t *testing.T) { func TestLevelContext(t *testing.T) { var buf bytes.Buffer - logger := log.NewTMJSONLogger(&buf) + logger := log.NewTMJSONLoggerNoTS(&buf) logger = log.NewFilter(logger, log.AllowError()) logger = logger.With("context", "value") @@ -96,7 +96,7 @@ func TestLevelContext(t *testing.T) { func TestVariousAllowWith(t *testing.T) { var buf bytes.Buffer - logger := log.NewTMJSONLogger(&buf) + logger := log.NewTMJSONLoggerNoTS(&buf) logger1 := log.NewFilter(logger, log.AllowError(), log.AllowInfoWith("context", "value")) logger1.With("context", "value").Info("foo", "bar", "baz") diff --git a/libs/log/tm_json_logger.go b/libs/log/tm_json_logger.go index a71ac1034..3ebeddaa3 100644 --- a/libs/log/tm_json_logger.go +++ b/libs/log/tm_json_logger.go @@ -11,5 +11,14 @@ import ( // w.Write. The passed Writer must be safe for concurrent use by multiple // goroutines if the returned Logger will be used concurrently. func NewTMJSONLogger(w io.Writer) Logger { - return &tmLogger{kitlog.NewJSONLogger(w)} + logger := kitlog.NewJSONLogger(w) + logger = kitlog.With(logger, "ts", kitlog.DefaultTimestampUTC) + return &tmLogger{logger} +} + +// NewTMJSONLoggerNoTS is the same as NewTMJSONLogger, but without the +// timestamp. +func NewTMJSONLoggerNoTS(w io.Writer) Logger { + logger := kitlog.NewJSONLogger(w) + return &tmLogger{logger} } diff --git a/libs/log/tracing_logger_test.go b/libs/log/tracing_logger_test.go index 6d6edc5ca..f32ac9c57 100644 --- a/libs/log/tracing_logger_test.go +++ b/libs/log/tracing_logger_test.go @@ -15,7 +15,7 @@ import ( func TestTracingLogger(t *testing.T) { var buf bytes.Buffer - logger := log.NewTMJSONLogger(&buf) + logger := log.NewTMJSONLoggerNoTS(&buf) logger1 := log.NewTracingLogger(logger) err1 := errors.New("courage is grace under pressure")