|
|
- package logger
-
- import (
- "fmt"
- "os"
-
- "github.com/tendermint/log15"
- . "github.com/tendermint/tendermint/common"
- "github.com/tendermint/tendermint/config"
- )
-
- var rootHandler log15.Handler
-
- 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
- }
-
- func init() {
- InitLog()
- }
-
- func InitLog() {
- handlers := []log15.Handler{}
-
- // By default, there's a stdout terminal format handler.
- handlers = append(handlers, log15.LvlFilterHandler(
- getLevel(config.App().GetString("Log.Stdout.Level")),
- log15.StreamHandler(os.Stdout, log15.TerminalFormat()),
- ))
-
- // Maybe also write to a file.
- if _logFileDir := config.App().GetString("Log.File.Dir"); _logFileDir != "" {
- // Create log dir if it doesn't exist
- err := os.MkdirAll(_logFileDir, 0700)
- if err != nil {
- fmt.Printf("Could not create directory: %v", err)
- os.Exit(1)
- }
- // File handler
- handlers = append(handlers, log15.LvlFilterHandler(
- getLevel(config.App().GetString("Log.File.Level")),
- log15.Must.FileHandler(_logFileDir+"/tendermint.log", log15.LogfmtFormat()),
- ))
- }
-
- // Set rootHandler.
- rootHandler = log15.MultiHandler(handlers...)
-
- // By setting handlers on the root, we handle events from all loggers.
- log15.Root().SetHandler(rootHandler)
- }
-
- // See binary/log for an example of usage.
- func RootHandler() log15.Handler {
- return rootHandler
- }
-
- func New(ctx ...interface{}) log15.Logger {
- return log15.Root().New(ctx...)
- }
|