You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.5 KiB

10 years ago
10 years ago
10 years ago
  1. package logger
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/tendermint/log15"
  6. . "github.com/tendermint/tendermint/common"
  7. "github.com/tendermint/tendermint/config"
  8. )
  9. var rootHandler log15.Handler
  10. func getLevel(lvlString string) log15.Lvl {
  11. lvl, err := log15.LvlFromString(lvlString)
  12. if err != nil {
  13. Exit(Fmt("Invalid log level %v: %v", lvlString, err))
  14. }
  15. return lvl
  16. }
  17. func init() {
  18. handlers := []log15.Handler{}
  19. // By default, there's a stdout terminal format handler.
  20. handlers = append(handlers, log15.LvlFilterHandler(
  21. getLevel(config.App().GetString("Log.Stdout.Level")),
  22. log15.StreamHandler(os.Stdout, log15.TerminalFormat()),
  23. ))
  24. // Maybe also write to a file.
  25. if _logFileDir := config.App().GetString("Log.File.Dir"); _logFileDir != "" {
  26. // Create log dir if it doesn't exist
  27. err := os.MkdirAll(_logFileDir, 0700)
  28. if err != nil {
  29. fmt.Printf("Could not create directory: %v", err)
  30. os.Exit(1)
  31. }
  32. // File handler
  33. handlers = append(handlers, log15.LvlFilterHandler(
  34. getLevel(config.App().GetString("Log.File.Level")),
  35. log15.Must.FileHandler(_logFileDir+"/tendermint.log", log15.LogfmtFormat()),
  36. ))
  37. }
  38. // Set rootHandler.
  39. rootHandler = log15.MultiHandler(handlers...)
  40. // By setting handlers on the root, we handle events from all loggers.
  41. log15.Root().SetHandler(rootHandler)
  42. }
  43. // See binary/log for an example of usage.
  44. func RootHandler() log15.Handler {
  45. return rootHandler
  46. }
  47. func New(ctx ...interface{}) log15.Logger {
  48. return log15.Root().New(ctx...)
  49. }