feat: allow log level to be customized freely

This commit is contained in:
nils måsén 2022-09-06 12:47:17 +02:00
parent 2caf08a76d
commit 5653b76219
2 changed files with 27 additions and 5 deletions

View file

@ -87,11 +87,11 @@ func PreRun(cmd *cobra.Command, _ []string) {
}) })
} }
if enabled, _ := f.GetBool("debug"); enabled { rawLogLevel, _ := f.GetString(`log-level`)
log.SetLevel(log.DebugLevel) if logLevel, err := log.ParseLevel(rawLogLevel); err != nil {
} log.Fatalf("Invalid log level: %s", err.Error())
if enabled, _ := f.GetBool("trace"); enabled { } else {
log.SetLevel(log.TraceLevel) log.SetLevel(logLevel)
} }
scheduleSpec, _ = f.GetString("schedule") scheduleSpec, _ = f.GetString("schedule")

View file

@ -182,6 +182,10 @@ func RegisterSystemFlags(rootCmd *cobra.Command) {
viper.GetString("WATCHTOWER_PORCELAIN"), viper.GetString("WATCHTOWER_PORCELAIN"),
`Write session results to stdout using a stable versioned format. Supported values: "v1"`) `Write session results to stdout using a stable versioned format. Supported values: "v1"`)
flags.String(
"log-level",
viper.GetString("WATCHTOWER_LOG_LEVEL"),
"The maximum log level that will be written to STDERR. Possible values: panic, fatal, error, warn, info, debug or trace")
} }
// RegisterNotificationFlags that are used by watchtower to send notifications // RegisterNotificationFlags that are used by watchtower to send notifications
@ -374,6 +378,7 @@ func SetDefaults() {
viper.SetDefault("WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT", 25) viper.SetDefault("WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT", 25)
viper.SetDefault("WATCHTOWER_NOTIFICATION_EMAIL_SUBJECTTAG", "") viper.SetDefault("WATCHTOWER_NOTIFICATION_EMAIL_SUBJECTTAG", "")
viper.SetDefault("WATCHTOWER_NOTIFICATION_SLACK_IDENTIFIER", "watchtower") viper.SetDefault("WATCHTOWER_NOTIFICATION_SLACK_IDENTIFIER", "watchtower")
viper.SetDefault("WATCHTOWER_LOG_LEVEL", "info")
} }
// EnvConfig translates the command-line options into environment variables // EnvConfig translates the command-line options into environment variables
@ -561,6 +566,23 @@ func ProcessFlagAliases(flags *pflag.FlagSet) {
interval, _ := flags.GetInt(`interval`) interval, _ := flags.GetInt(`interval`)
flags.Set(`schedule`, fmt.Sprintf(`@every %ds`, interval)) flags.Set(`schedule`, fmt.Sprintf(`@every %ds`, interval))
} }
if flagIsEnabled(flags, `debug`) {
flags.Set(`log-level`, `debug`)
}
if flagIsEnabled(flags, `trace`) {
flags.Set(`log-level`, `trace`)
}
}
func flagIsEnabled(flags *pflag.FlagSet, name string) bool {
value, err := flags.GetBool(name)
if err != nil {
log.Fatalf(`The flag %q is not defined`, name)
}
return value
} }
func appendFlagValue(flags *pflag.FlagSet, name string, values ...string) error { func appendFlagValue(flags *pflag.FlagSet, name string, values ...string) error {