diff --git a/main.go b/main.go index 16c4f21f1e..56b4775cb6 100644 --- a/main.go +++ b/main.go @@ -30,14 +30,29 @@ func main() { Usage: "debug mode", EnvVar: "DEBUG", }, + + cli.StringFlag{ + Name: "log-level, l", + Value: "info", + Usage: fmt.Sprintf("Log level (options: debug, info, warn, error, fatal, panic)"), + }, } // logs app.Before = func(c *cli.Context) error { log.SetOutput(os.Stderr) - if c.Bool("debug") { + level, err := log.ParseLevel(c.String("log-level")) + if err != nil { + log.Fatalf(err.Error()) + } + log.SetLevel(level) + + // If a log level wasn't specified and we are running in debug mode, + // enforce log-level=debug. + if !c.IsSet("log-level") && !c.IsSet("l") && c.Bool("debug") { log.SetLevel(log.DebugLevel) } + return nil }