diff --git a/cmd/cli/cli.go b/cmd/cli/cli.go index 3d5f534..eaee8ef 100644 --- a/cmd/cli/cli.go +++ b/cmd/cli/cli.go @@ -289,7 +289,7 @@ func run(appCallback *AppCallback, stopCh chan struct{}) { } p.mu.Unlock() - processLogAndCacheFlags() + processLogAndCacheFlags(v, &cfg) // Log config do not have thing to validate, so it's safe to init log here, // so it's able to log information in processCDFlags. @@ -340,7 +340,7 @@ func run(appCallback *AppCallback, stopCh chan struct{}) { updated := updateListenerConfig(&cfg, notifyExitToLogServer) if cdUID != "" { - processLogAndCacheFlags() + processLogAndCacheFlags(v, &cfg) } // Persist intercept_mode to config when provided via CLI flag on full install. @@ -851,7 +851,7 @@ func processListenFlag() { } // processLogAndCacheFlags processes log and cache related flags -func processLogAndCacheFlags() { +func processLogAndCacheFlags(v *viper.Viper, cfg *ctrld.Config) { mainLog.Load().Debug().Msg("Processing log and cache flags") if logPath != "" { diff --git a/cmd/cli/prog.go b/cmd/cli/prog.go index e1b1a9c..47ced10 100644 --- a/cmd/cli/prog.go +++ b/cmd/cli/prog.go @@ -322,7 +322,8 @@ func (p *prog) runWait() { continue } if cdUID != "" { - if rc, err := processCDFlags(newCfg); err != nil { + rc, err := processCDFlags(newCfg) + if err != nil { p.Error().Err(err).Msg("Could not fetch controld config") waitOldRunDone() continue @@ -334,6 +335,10 @@ func (p *prog) runWait() { } } + // Though the log configuration could not be changed during reloading, we still need to + // process the current flags here, so runtime internal logs can be used correctly. + processLogAndCacheFlags(v, newCfg) + waitOldRunDone() p.mu.Lock()