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  )