mirror of
https://github.com/containrrr/watchtower.git
synced 2025-12-16 15:10:12 +01:00
feat: add log file support
This commit is contained in:
parent
3d1ed2381b
commit
8ea89ce13e
2 changed files with 44 additions and 0 deletions
|
|
@ -123,6 +123,25 @@ Environment Variable: WATCHTOWER_TRACE
|
|||
Default: false
|
||||
```
|
||||
|
||||
## Enable Log File
|
||||
Enable logging to a file. The file will be located at `/var/log/watchtower.log` by default inside the container.
|
||||
|
||||
```text
|
||||
Argument: --enable-log-file
|
||||
Environment Variable: WATCHTOWER_ENABLE_LOG_FILE
|
||||
Type: Boolean
|
||||
Default: false
|
||||
```
|
||||
|
||||
To change the location of the log file, use the `--log-file-path` argument.
|
||||
|
||||
```text
|
||||
Argument: --log-file-path
|
||||
Environment Variable: WATCHTOWER_LOG_FILE_PATH
|
||||
Type: String
|
||||
Default: "/var/log/watchtower.log"
|
||||
```
|
||||
|
||||
## Maximum log level
|
||||
|
||||
The maximum log level that will be written to STDERR (shown in `docker log` when used in a container).
|
||||
|
|
|
|||
|
|
@ -200,6 +200,16 @@ func RegisterSystemFlags(rootCmd *cobra.Command) {
|
|||
envString("WATCHTOWER_LOG_LEVEL"),
|
||||
"The maximum log level that will be written to STDERR. Possible values: panic, fatal, error, warn, info, debug or trace")
|
||||
|
||||
flags.Bool(
|
||||
"enable-log-file",
|
||||
envBool("WATCHTOWER_ENABLE_LOG_FILE"),
|
||||
"Enable logging to file")
|
||||
|
||||
flags.String(
|
||||
"log-file-path",
|
||||
envString("WATCHTOWER_LOG_FILE_PATH"),
|
||||
"The file to write logs to. If not specified, logs will be written to STDERR")
|
||||
|
||||
flags.BoolP(
|
||||
"health-check",
|
||||
"",
|
||||
|
|
@ -430,6 +440,8 @@ func SetDefaults() {
|
|||
viper.SetDefault("WATCHTOWER_NOTIFICATION_SLACK_IDENTIFIER", "watchtower")
|
||||
viper.SetDefault("WATCHTOWER_LOG_LEVEL", "info")
|
||||
viper.SetDefault("WATCHTOWER_LOG_FORMAT", "auto")
|
||||
viper.SetDefault("WATCHTOWER_ENABLE_LOG_FILE", false)
|
||||
viper.SetDefault("WATCHTOWER_LOG_FILE_PATH", "/var/log/watchtower.log")
|
||||
}
|
||||
|
||||
// EnvConfig translates the command-line options into environment variables
|
||||
|
|
@ -636,6 +648,8 @@ func ProcessFlagAliases(flags *pflag.FlagSet) {
|
|||
func SetupLogging(f *pflag.FlagSet) error {
|
||||
logFormat, _ := f.GetString(`log-format`)
|
||||
noColor, _ := f.GetBool("no-color")
|
||||
logToFile := flagIsEnabled(f, `enable-log-file`)
|
||||
path, _ := f.GetString(`log-file-path`)
|
||||
|
||||
switch strings.ToLower(logFormat) {
|
||||
case "auto":
|
||||
|
|
@ -669,6 +683,17 @@ func SetupLogging(f *pflag.FlagSet) error {
|
|||
log.SetLevel(logLevel)
|
||||
}
|
||||
|
||||
if logToFile {
|
||||
logFile, err := os.OpenFile(path, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)
|
||||
if err != nil {
|
||||
logFile, err = os.Create(path)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to open log file: %e", err)
|
||||
}
|
||||
}
|
||||
log.SetOutput(logFile)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue