package log_test
|
|
|
|
import (
|
|
"bytes"
|
|
"io/ioutil"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/go-logfmt/logfmt"
|
|
"github.com/tendermint/tendermint/libs/log"
|
|
)
|
|
|
|
func TestLoggerLogsItsErrors(t *testing.T) {
|
|
var buf bytes.Buffer
|
|
|
|
logger := log.NewTMLogger(&buf)
|
|
logger.Info("foo", "baz baz", "bar")
|
|
msg := strings.TrimSpace(buf.String())
|
|
if !strings.Contains(msg, logfmt.ErrInvalidKey.Error()) {
|
|
t.Errorf("Expected logger msg to contain ErrInvalidKey, got %s", msg)
|
|
}
|
|
}
|
|
|
|
func BenchmarkTMLoggerSimple(b *testing.B) {
|
|
benchmarkRunner(b, log.NewTMLogger(ioutil.Discard), baseInfoMessage)
|
|
}
|
|
|
|
func BenchmarkTMLoggerContextual(b *testing.B) {
|
|
benchmarkRunner(b, log.NewTMLogger(ioutil.Discard), withInfoMessage)
|
|
}
|
|
|
|
func benchmarkRunner(b *testing.B, logger log.Logger, f func(log.Logger)) {
|
|
lc := logger.With("common_key", "common_value")
|
|
b.ReportAllocs()
|
|
b.ResetTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
f(lc)
|
|
}
|
|
}
|
|
|
|
var (
|
|
baseInfoMessage = func(logger log.Logger) { logger.Info("foo_message", "foo_key", "foo_value") }
|
|
withInfoMessage = func(logger log.Logger) { logger.With("a", "b").Info("c", "d", "f") }
|
|
)
|