mirror of
https://github.com/containrrr/watchtower.git
synced 2025-12-13 21:56:38 +01:00
feat: allow log level to be set to any level (#1345)
Co-authored-by: nils måsén <nils@piksel.se>
This commit is contained in:
parent
230312fb50
commit
0fddbfb7ed
4 changed files with 70 additions and 11 deletions
|
|
@ -182,6 +182,10 @@ func RegisterSystemFlags(rootCmd *cobra.Command) {
|
|||
viper.GetString("WATCHTOWER_PORCELAIN"),
|
||||
`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
|
||||
|
|
@ -374,6 +378,7 @@ func SetDefaults() {
|
|||
viper.SetDefault("WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT", 25)
|
||||
viper.SetDefault("WATCHTOWER_NOTIFICATION_EMAIL_SUBJECTTAG", "")
|
||||
viper.SetDefault("WATCHTOWER_NOTIFICATION_SLACK_IDENTIFIER", "watchtower")
|
||||
viper.SetDefault("WATCHTOWER_LOG_LEVEL", "info")
|
||||
}
|
||||
|
||||
// EnvConfig translates the command-line options into environment variables
|
||||
|
|
@ -561,6 +566,23 @@ func ProcessFlagAliases(flags *pflag.FlagSet) {
|
|||
interval, _ := flags.GetInt(`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 {
|
||||
|
|
|
|||
|
|
@ -129,11 +129,6 @@ func TestIsFile(t *testing.T) {
|
|||
assert.True(t, isFile(os.Args[0]), "the currently running binary path should always be considered a file")
|
||||
}
|
||||
|
||||
func TestReadFlags(t *testing.T) {
|
||||
logrus.StandardLogger().ExitFunc = func(_ int) { t.FailNow() }
|
||||
|
||||
}
|
||||
|
||||
func TestProcessFlagAliases(t *testing.T) {
|
||||
logrus.StandardLogger().ExitFunc = func(_ int) { t.FailNow() }
|
||||
cmd := new(cobra.Command)
|
||||
|
|
@ -145,6 +140,7 @@ func TestProcessFlagAliases(t *testing.T) {
|
|||
require.NoError(t, cmd.ParseFlags([]string{
|
||||
`--porcelain`, `v1`,
|
||||
`--interval`, `10`,
|
||||
`--trace`,
|
||||
}))
|
||||
flags := cmd.Flags()
|
||||
ProcessFlagAliases(flags)
|
||||
|
|
@ -163,6 +159,28 @@ func TestProcessFlagAliases(t *testing.T) {
|
|||
|
||||
sched, _ := flags.GetString(`schedule`)
|
||||
assert.Equal(t, `@every 10s`, sched)
|
||||
|
||||
logLevel, _ := flags.GetString(`log-level`)
|
||||
assert.Equal(t, `trace`, logLevel)
|
||||
}
|
||||
|
||||
func TestProcessFlagAliasesLogLevelFromEnvironment(t *testing.T) {
|
||||
cmd := new(cobra.Command)
|
||||
err := os.Setenv("WATCHTOWER_DEBUG", `true`)
|
||||
require.NoError(t, err)
|
||||
defer os.Unsetenv("WATCHTOWER_DEBUG")
|
||||
|
||||
SetDefaults()
|
||||
RegisterDockerFlags(cmd)
|
||||
RegisterSystemFlags(cmd)
|
||||
RegisterNotificationFlags(cmd)
|
||||
|
||||
require.NoError(t, cmd.ParseFlags([]string{}))
|
||||
flags := cmd.Flags()
|
||||
ProcessFlagAliases(flags)
|
||||
|
||||
logLevel, _ := flags.GetString(`log-level`)
|
||||
assert.Equal(t, `debug`, logLevel)
|
||||
}
|
||||
|
||||
func TestProcessFlagAliasesSchedAndInterval(t *testing.T) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue