tendermint/log.go

92 lines
1.9 KiB
Go

package logger
import (
"os"
. "github.com/tendermint/go-common"
"github.com/tendermint/log15"
)
//var rootHandler log15.Handler
var mainHandler log15.Handler
var bypassHandler log15.Handler
func init() {
Reset()
}
func SetLogLevel(logLevel string) {
resetWithLogLevel(logLevel)
}
func resetWithLogLevel(logLevel string) {
// main handler
//handlers := []log15.Handler{}
mainHandler = log15.LvlFilterHandler(
getLevel(logLevel),
log15.StreamHandler(os.Stdout, log15.TerminalFormat()),
)
//handlers = append(handlers, mainHandler)
// bypass handler for not filtering on global logLevel.
bypassHandler = log15.StreamHandler(os.Stdout, log15.TerminalFormat())
//handlers = append(handlers, bypassHandler)
// Set rootHandler.
//rootHandler = log15.MultiHandler(handlers...)
// By setting handlers on the root, we handle events from all loggers.
log15.Root().SetHandler(mainHandler)
}
// You might want to call this after resetting tendermint/go-config.
func Reset() {
var logLevel string = "debug"
if config != nil {
logLevel = config.GetString("log_level")
}
resetWithLogLevel(logLevel)
}
// See go-wire/log for an example of usage.
func MainHandler() log15.Handler {
return mainHandler
}
func BypassHandler() log15.Handler {
return bypassHandler
}
func New(ctx ...interface{}) log15.Logger {
return NewMain(ctx...)
}
func NewMain(ctx ...interface{}) log15.Logger {
return log15.Root().New(ctx...)
}
func NewBypass(ctx ...interface{}) log15.Logger {
bypass := log15.New(ctx...)
bypass.SetHandler(bypassHandler)
return bypass
}
func getLevel(lvlString string) log15.Lvl {
lvl, err := log15.LvlFromString(lvlString)
if err != nil {
Exit(Fmt("Invalid log level %v: %v", lvlString, err))
}
return lvl
}
//----------------------------------------
// Exported from log15
var LvlFilterHandler = log15.LvlFilterHandler
var LvlDebug = log15.LvlDebug
var LvlInfo = log15.LvlInfo
var LvlWarn = log15.LvlWarn
var LvlError = log15.LvlError