From 8bd3b9e4744e1d89de1a16a3e534c728f1e471b4 Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Wed, 19 Feb 2025 20:01:54 +0700 Subject: [PATCH] cmd/cli: fix missing runtime log for startup The runtime internal log should be initialized right after normal log from configuration, prevent missing log from any actions that could be happened between two initializations. --- cmd/cli/cli.go | 5 +---- cmd/cli/log_writer.go | 9 +++++++++ cmd/cli/main.go | 6 ------ cmd/cli/prog.go | 3 +-- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/cmd/cli/cli.go b/cmd/cli/cli.go index be8b5af..6e7ecbe 100644 --- a/cmd/cli/cli.go +++ b/cmd/cli/cli.go @@ -266,10 +266,7 @@ func run(appCallback *AppCallback, stopCh chan struct{}) { // 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. - logWriters := initLogging() - - // Initializing internal logging after global logging. - p.initInternalLogging(logWriters) + p.initLogging(true) mainLog.Load().Info().Msgf("starting ctrld %s", curVersion()) mainLog.Load().Info().Msgf("os: %s", osVersion()) diff --git a/cmd/cli/log_writer.go b/cmd/cli/log_writer.go index ff27259..ab6b855 100644 --- a/cmd/cli/log_writer.go +++ b/cmd/cli/log_writer.go @@ -93,6 +93,15 @@ func (lw *logWriter) Write(p []byte) (int, error) { return lw.buf.Write(p) } +// initLogging initializes global logging setup. +func (p *prog) initLogging(backup bool) { + zerolog.TimeFieldFormat = time.RFC3339 + ".000" + logWriters := initLoggingWithBackup(backup) + + // Initializing internal logging after global logging. + p.initInternalLogging(logWriters) +} + // initInternalLogging performs internal logging if there's no log enabled. func (p *prog) initInternalLogging(writers []io.Writer) { if !p.needInternalLogging() { diff --git a/cmd/cli/main.go b/cmd/cli/main.go index 37ed314..6a8cb62 100644 --- a/cmd/cli/main.go +++ b/cmd/cli/main.go @@ -103,12 +103,6 @@ func initConsoleLogging() { } } -// initLogging initializes global logging setup. -func initLogging() []io.Writer { - zerolog.TimeFieldFormat = time.RFC3339 + ".000" - return initLoggingWithBackup(true) -} - // initInteractiveLogging is like initLogging, but the ProxyLogger is discarded // to be used for all interactive commands. // diff --git a/cmd/cli/prog.go b/cmd/cli/prog.go index df004ab..60f138b 100644 --- a/cmd/cli/prog.go +++ b/cmd/cli/prog.go @@ -560,13 +560,12 @@ func (p *prog) run(reload bool, reloadCh chan struct{}) { if !reload { // Stop writing log to unix socket. consoleWriter.Out = os.Stdout - logWriters := initLoggingWithBackup(false) + p.initLogging(false) if p.logConn != nil { _ = p.logConn.Close() } go p.apiConfigReload() p.postRun() - p.initInternalLogging(logWriters) } wg.Wait() }