From 8cc9efdf7c73fd171beb8a7d21c031ca92e560ac Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Mon, 27 Apr 2020 09:42:52 -0700 Subject: [PATCH] Allow InitLogging to be called twice This makes it a bit easier to embed k3s into another go program --- pkg/cli/cmds/log.go | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/pkg/cli/cmds/log.go b/pkg/cli/cmds/log.go index 3ae6803db5..28726b77a0 100644 --- a/pkg/cli/cmds/log.go +++ b/pkg/cli/cmds/log.go @@ -6,6 +6,7 @@ import ( "io" "os" "strconv" + "sync" "time" "github.com/docker/docker/pkg/reexec" @@ -43,19 +44,26 @@ var ( Usage: "(logging) Log to standard error as well as file (if set)", Destination: &LogConfig.AlsoLogToStderr, } + + logSetupOnce sync.Once ) func InitLogging() error { - if LogConfig.LogFile != "" && os.Getenv("_K3S_LOG_REEXEC_") == "" { - return runWithLogging() - } + var rErr error + logSetupOnce.Do(func() { + if LogConfig.LogFile != "" && os.Getenv("_K3S_LOG_REEXEC_") == "" { + rErr = runWithLogging() + return + } - if err := checkUnixTimestamp(); err != nil { - return err - } + if err := checkUnixTimestamp(); err != nil { + rErr = err + return + } - setupLogging() - return nil + setupLogging() + }) + return rErr } func checkUnixTimestamp() error {