github.com/tendermint/tmlibs@v0.9.0/log/tm_logger_test.go (about) 1 package log_test 2 3 import ( 4 "bytes" 5 "io/ioutil" 6 "strings" 7 "testing" 8 9 "github.com/go-logfmt/logfmt" 10 "github.com/tendermint/tmlibs/log" 11 ) 12 13 func TestLoggerLogsItsErrors(t *testing.T) { 14 var buf bytes.Buffer 15 16 logger := log.NewTMLogger(&buf) 17 logger.Info("foo", "baz baz", "bar") 18 msg := strings.TrimSpace(buf.String()) 19 if !strings.Contains(msg, logfmt.ErrInvalidKey.Error()) { 20 t.Errorf("Expected logger msg to contain ErrInvalidKey, got %s", msg) 21 } 22 } 23 24 func BenchmarkTMLoggerSimple(b *testing.B) { 25 benchmarkRunner(b, log.NewTMLogger(ioutil.Discard), baseInfoMessage) 26 } 27 28 func BenchmarkTMLoggerContextual(b *testing.B) { 29 benchmarkRunner(b, log.NewTMLogger(ioutil.Discard), withInfoMessage) 30 } 31 32 func benchmarkRunner(b *testing.B, logger log.Logger, f func(log.Logger)) { 33 lc := logger.With("common_key", "common_value") 34 b.ReportAllocs() 35 b.ResetTimer() 36 for i := 0; i < b.N; i++ { 37 f(lc) 38 } 39 } 40 41 var ( 42 baseInfoMessage = func(logger log.Logger) { logger.Info("foo_message", "foo_key", "foo_value") } 43 withInfoMessage = func(logger log.Logger) { logger.With("a", "b").Info("c", "d", "f") } 44 )