mirror of
https://github.com/tendermint/tendermint.git
synced 2026-01-03 11:45:18 +00:00
* build(deps): Bump github.com/go-kit/kit from 0.10.0 to 0.12.0 Bumps [github.com/go-kit/kit](https://github.com/go-kit/kit) from 0.10.0 to 0.12.0. - [Release notes](https://github.com/go-kit/kit/releases) - [Commits](https://github.com/go-kit/kit/compare/v0.10.0...v0.12.0) --- updated-dependencies: - dependency-name: github.com/go-kit/kit dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * add nolint * fix lint * fix build Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: tycho garen <garen@tychoish.com>
87 lines
2.6 KiB
Go
87 lines
2.6 KiB
Go
package log
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
|
|
kitlog "github.com/go-kit/log"
|
|
kitlevel "github.com/go-kit/log/level"
|
|
"github.com/go-kit/log/term"
|
|
)
|
|
|
|
const (
|
|
msgKey = "_msg" // "_" prefixed to avoid collisions
|
|
moduleKey = "module"
|
|
)
|
|
|
|
type tmLogger struct {
|
|
srcLogger kitlog.Logger
|
|
}
|
|
|
|
// Interface assertions
|
|
var _ Logger = (*tmLogger)(nil)
|
|
|
|
// NewTMLogger returns a logger that encodes msg and keyvals to the Writer
|
|
// using go-kit's log as an underlying logger and our custom formatter. Note
|
|
// that underlying logger could be swapped with something else.
|
|
func NewTMLogger(w io.Writer) Logger {
|
|
// Color by level value
|
|
colorFn := func(keyvals ...interface{}) term.FgBgColor {
|
|
if keyvals[0] != kitlevel.Key() {
|
|
panic(fmt.Sprintf("expected level key to be first, got %v", keyvals[0]))
|
|
}
|
|
switch keyvals[1].(kitlevel.Value).String() {
|
|
case "debug":
|
|
return term.FgBgColor{Fg: term.DarkGray}
|
|
case "error":
|
|
return term.FgBgColor{Fg: term.Red}
|
|
default:
|
|
return term.FgBgColor{}
|
|
}
|
|
}
|
|
|
|
return &tmLogger{term.NewLogger(w, NewTMFmtLogger, colorFn)}
|
|
}
|
|
|
|
// NewTMLoggerWithColorFn allows you to provide your own color function. See
|
|
// NewTMLogger for documentation.
|
|
func NewTMLoggerWithColorFn(w io.Writer, colorFn func(keyvals ...interface{}) term.FgBgColor) Logger {
|
|
return &tmLogger{term.NewLogger(w, NewTMFmtLogger, colorFn)}
|
|
}
|
|
|
|
// Info logs a message at level Info.
|
|
func (l *tmLogger) Info(msg string, keyvals ...interface{}) {
|
|
lWithLevel := kitlevel.Info(l.srcLogger)
|
|
|
|
if err := kitlog.With(lWithLevel, msgKey, msg).Log(keyvals...); err != nil {
|
|
errLogger := kitlevel.Error(l.srcLogger)
|
|
kitlog.With(errLogger, msgKey, msg).Log("err", err) //nolint:errcheck // no need to check error again
|
|
}
|
|
}
|
|
|
|
// Debug logs a message at level Debug.
|
|
func (l *tmLogger) Debug(msg string, keyvals ...interface{}) {
|
|
lWithLevel := kitlevel.Debug(l.srcLogger)
|
|
|
|
if err := kitlog.With(lWithLevel, msgKey, msg).Log(keyvals...); err != nil {
|
|
errLogger := kitlevel.Error(l.srcLogger)
|
|
kitlog.With(errLogger, msgKey, msg).Log("err", err) //nolint:errcheck // no need to check error again
|
|
}
|
|
}
|
|
|
|
// Error logs a message at level Error.
|
|
func (l *tmLogger) Error(msg string, keyvals ...interface{}) {
|
|
lWithLevel := kitlevel.Error(l.srcLogger)
|
|
|
|
lWithMsg := kitlog.With(lWithLevel, msgKey, msg)
|
|
if err := lWithMsg.Log(keyvals...); err != nil {
|
|
lWithMsg.Log("err", err) //nolint:errcheck // no need to check error again
|
|
}
|
|
}
|
|
|
|
// With returns a new contextual logger with keyvals prepended to those passed
|
|
// to calls to Info, Debug or Error.
|
|
func (l *tmLogger) With(keyvals ...interface{}) Logger {
|
|
return &tmLogger{kitlog.With(l.srcLogger, keyvals...)}
|
|
}
|