mirror of
https://github.com/containrrr/watchtower.git
synced 2025-12-16 15:10:12 +01:00
feat: allow logging output to use JSON formatter
Signed-off-by: GridexX <arsene582@gmail.com>
This commit is contained in:
parent
a5d7f23d2e
commit
be98119552
4 changed files with 56 additions and 11 deletions
28
cmd/root.go
28
cmd/root.go
|
|
@ -28,17 +28,18 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
client container.Client
|
client container.Client
|
||||||
scheduleSpec string
|
scheduleSpec string
|
||||||
cleanup bool
|
cleanup bool
|
||||||
noRestart bool
|
noRestart bool
|
||||||
monitorOnly bool
|
monitorOnly bool
|
||||||
enableLabel bool
|
enableLabel bool
|
||||||
notifier t.Notifier
|
enableJsonFormatter bool
|
||||||
timeout time.Duration
|
notifier t.Notifier
|
||||||
lifecycleHooks bool
|
timeout time.Duration
|
||||||
rollingRestart bool
|
lifecycleHooks bool
|
||||||
scope string
|
rollingRestart bool
|
||||||
|
scope string
|
||||||
)
|
)
|
||||||
|
|
||||||
var rootCmd = NewRootCommand()
|
var rootCmd = NewRootCommand()
|
||||||
|
|
@ -96,6 +97,11 @@ func PreRun(cmd *cobra.Command, _ []string) {
|
||||||
log.SetLevel(logLevel)
|
log.SetLevel(logLevel)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enableJsonFormatter, _ = f.GetBool("json-logging")
|
||||||
|
if enableJsonFormatter {
|
||||||
|
log.SetFormatter(&log.JSONFormatter{})
|
||||||
|
}
|
||||||
|
|
||||||
scheduleSpec, _ = f.GetString("schedule")
|
scheduleSpec, _ = f.GetString("schedule")
|
||||||
|
|
||||||
flags.GetSecretsFromFiles(cmd)
|
flags.GetSecretsFromFiles(cmd)
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,17 @@ Environment Variable: WATCHTOWER_LOG_LEVEL
|
||||||
Default: info
|
Default: info
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## JSON Logging
|
||||||
|
|
||||||
|
Enables the JSON log formatter for logging, changing the log output to JSON format. By default, the log output follows the standard text-based format.
|
||||||
|
|
||||||
|
```text
|
||||||
|
Argument: --json-logging
|
||||||
|
Environment Variable: WATCHTOWER_JSON_LOGGING
|
||||||
|
Type: Boolean
|
||||||
|
Default: false
|
||||||
|
```
|
||||||
|
|
||||||
## ANSI colors
|
## ANSI colors
|
||||||
Disable ANSI color escape codes in log output.
|
Disable ANSI color escape codes in log output.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,12 @@ func RegisterSystemFlags(rootCmd *cobra.Command) {
|
||||||
viper.GetBool("WATCHTOWER_LABEL_ENABLE"),
|
viper.GetBool("WATCHTOWER_LABEL_ENABLE"),
|
||||||
"Watch containers where the com.centurylinklabs.watchtower.enable label is true")
|
"Watch containers where the com.centurylinklabs.watchtower.enable label is true")
|
||||||
|
|
||||||
|
flags.BoolP(
|
||||||
|
"json-logging",
|
||||||
|
"j",
|
||||||
|
viper.GetBool("WATCHTOWER_JSON_LOGGING"),
|
||||||
|
"Enables the JSON log formatter for logging")
|
||||||
|
|
||||||
flags.BoolP(
|
flags.BoolP(
|
||||||
"debug",
|
"debug",
|
||||||
"d",
|
"d",
|
||||||
|
|
|
||||||
|
|
@ -183,6 +183,28 @@ func TestProcessFlagAliasesLogLevelFromEnvironment(t *testing.T) {
|
||||||
assert.Equal(t, `debug`, logLevel)
|
assert.Equal(t, `debug`, logLevel)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestJSONLoggingFlag(t *testing.T) {
|
||||||
|
cmd := new(cobra.Command)
|
||||||
|
|
||||||
|
SetDefaults()
|
||||||
|
RegisterDockerFlags(cmd)
|
||||||
|
RegisterSystemFlags(cmd)
|
||||||
|
|
||||||
|
// Ensure the default value is false
|
||||||
|
enableJsonFormatter, err := cmd.PersistentFlags().GetBool("json-logging")
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
assert.Equal(t, false, enableJsonFormatter)
|
||||||
|
|
||||||
|
// Test with the argument
|
||||||
|
require.NoError(t, cmd.ParseFlags([]string{`--json-logging`}))
|
||||||
|
flags := cmd.Flags()
|
||||||
|
enableJsonFormatter, _ = flags.GetBool("json-logging")
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, true, enableJsonFormatter)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func TestProcessFlagAliasesSchedAndInterval(t *testing.T) {
|
func TestProcessFlagAliasesSchedAndInterval(t *testing.T) {
|
||||||
logrus.StandardLogger().ExitFunc = func(_ int) { panic(`FATAL`) }
|
logrus.StandardLogger().ExitFunc = func(_ int) { panic(`FATAL`) }
|
||||||
cmd := new(cobra.Command)
|
cmd := new(cobra.Command)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue