mirror of
https://github.com/fluencelabs/tendermint
synced 2025-04-29 08:42:14 +00:00
See https://github.com/go-kit/kit/issues/164 for discussion of why kitlog returns an error. ``` Package log is designed to be used for more than simple application info/warning/error logging; it's suitable for log-structured data in an e.g. Lambda architecture, where each invocation is important. I agree with you that if we were doing only application logging the error would be more noise than signal. But the scope of the package is larger than that. ``` Since we are doing only application logging and we're not checking errors, it is safe to get rid them.
121 lines
3.3 KiB
Go
121 lines
3.3 KiB
Go
package log_test
|
|
|
|
import (
|
|
"bytes"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/tendermint/tmlibs/log"
|
|
)
|
|
|
|
func TestVariousLevels(t *testing.T) {
|
|
testCases := []struct {
|
|
name string
|
|
allowed log.Option
|
|
want string
|
|
}{
|
|
{
|
|
"AllowAll",
|
|
log.AllowAll(),
|
|
strings.Join([]string{
|
|
`{"_msg":"here","level":"debug","this is":"debug log"}`,
|
|
`{"_msg":"here","level":"info","this is":"info log"}`,
|
|
`{"_msg":"here","level":"error","this is":"error log"}`,
|
|
}, "\n"),
|
|
},
|
|
{
|
|
"AllowDebug",
|
|
log.AllowDebug(),
|
|
strings.Join([]string{
|
|
`{"_msg":"here","level":"debug","this is":"debug log"}`,
|
|
`{"_msg":"here","level":"info","this is":"info log"}`,
|
|
`{"_msg":"here","level":"error","this is":"error log"}`,
|
|
}, "\n"),
|
|
},
|
|
{
|
|
"AllowInfo",
|
|
log.AllowInfo(),
|
|
strings.Join([]string{
|
|
`{"_msg":"here","level":"info","this is":"info log"}`,
|
|
`{"_msg":"here","level":"error","this is":"error log"}`,
|
|
}, "\n"),
|
|
},
|
|
{
|
|
"AllowError",
|
|
log.AllowError(),
|
|
strings.Join([]string{
|
|
`{"_msg":"here","level":"error","this is":"error log"}`,
|
|
}, "\n"),
|
|
},
|
|
{
|
|
"AllowNone",
|
|
log.AllowNone(),
|
|
``,
|
|
},
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
var buf bytes.Buffer
|
|
logger := log.NewFilter(log.NewTMJSONLogger(&buf), tc.allowed)
|
|
|
|
logger.Debug("here", "this is", "debug log")
|
|
logger.Info("here", "this is", "info log")
|
|
logger.Error("here", "this is", "error log")
|
|
|
|
if want, have := tc.want, strings.TrimSpace(buf.String()); want != have {
|
|
t.Errorf("\nwant:\n%s\nhave:\n%s", want, have)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestLevelContext(t *testing.T) {
|
|
var buf bytes.Buffer
|
|
|
|
var logger log.Logger
|
|
logger = log.NewTMJSONLogger(&buf)
|
|
logger = log.NewFilter(logger, log.AllowError())
|
|
logger = logger.With("context", "value")
|
|
|
|
logger.Error("foo", "bar", "baz")
|
|
if want, have := `{"_msg":"foo","bar":"baz","context":"value","level":"error"}`, strings.TrimSpace(buf.String()); want != have {
|
|
t.Errorf("\nwant '%s'\nhave '%s'", want, have)
|
|
}
|
|
|
|
buf.Reset()
|
|
logger.Info("foo", "bar", "baz")
|
|
if want, have := ``, strings.TrimSpace(buf.String()); want != have {
|
|
t.Errorf("\nwant '%s'\nhave '%s'", want, have)
|
|
}
|
|
}
|
|
|
|
func TestVariousAllowWith(t *testing.T) {
|
|
var buf bytes.Buffer
|
|
|
|
var logger log.Logger
|
|
logger = log.NewTMJSONLogger(&buf)
|
|
|
|
logger1 := log.NewFilter(logger, log.AllowError(), log.AllowInfoWith("context", "value"))
|
|
logger1.With("context", "value").Info("foo", "bar", "baz")
|
|
if want, have := `{"_msg":"foo","bar":"baz","context":"value","level":"info"}`, strings.TrimSpace(buf.String()); want != have {
|
|
t.Errorf("\nwant '%s'\nhave '%s'", want, have)
|
|
}
|
|
|
|
buf.Reset()
|
|
|
|
logger2 := log.NewFilter(logger, log.AllowError(), log.AllowInfoWith("context", "value"), log.AllowNoneWith("user", "Sam"))
|
|
logger2.With("context", "value", "user", "Sam").Info("foo", "bar", "baz")
|
|
if want, have := ``, strings.TrimSpace(buf.String()); want != have {
|
|
t.Errorf("\nwant '%s'\nhave '%s'", want, have)
|
|
}
|
|
|
|
buf.Reset()
|
|
|
|
logger3 := log.NewFilter(logger, log.AllowError(), log.AllowInfoWith("context", "value"), log.AllowNoneWith("user", "Sam"))
|
|
logger3.With("user", "Sam").With("context", "value").Info("foo", "bar", "baz")
|
|
if want, have := `{"_msg":"foo","bar":"baz","context":"value","level":"info","user":"Sam"}`, strings.TrimSpace(buf.String()); want != have {
|
|
t.Errorf("\nwant '%s'\nhave '%s'", want, have)
|
|
}
|
|
}
|