From b087991a915141a5a4efba501d8571ff2801d9ed Mon Sep 17 00:00:00 2001 From: tiancaiamao Date: Thu, 14 Sep 2017 22:34:43 +0800 Subject: [PATCH] pkg/logutil: wrap InitLogger in sync.Once for thread-safety --- pkg/logutil/log.go | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/pkg/logutil/log.go b/pkg/logutil/log.go index 42609921712..ddace9d3cb9 100644 --- a/pkg/logutil/log.go +++ b/pkg/logutil/log.go @@ -20,6 +20,7 @@ import ( "path" "runtime" "strings" + "sync" log "github.com/Sirupsen/logrus" "github.com/coreos/pkg/capnslog" @@ -214,27 +215,31 @@ func InitFileLog(cfg *FileLogConfig) error { return nil } +var once sync.Once + // InitLogger initalizes PD's logger. func InitLogger(cfg *LogConfig) error { - log.SetLevel(stringToLogLevel(cfg.Level)) - log.AddHook(&contextHook{}) + var err error + once.Do(func() { + log.SetLevel(stringToLogLevel(cfg.Level)) + log.AddHook(&contextHook{}) - if cfg.Format == "" { - cfg.Format = defaultLogFormat - } - log.SetFormatter(stringToLogFormatter(cfg.Format, cfg.DisableTimestamp)) + if cfg.Format == "" { + cfg.Format = defaultLogFormat + } + log.SetFormatter(stringToLogFormatter(cfg.Format, cfg.DisableTimestamp)) - // etcd log - capnslog.SetFormatter(&redirectFormatter{}) + // etcd log + capnslog.SetFormatter(&redirectFormatter{}) - if len(cfg.File.Filename) == 0 { - return nil - } + if len(cfg.File.Filename) == 0 { + return + } - err := InitFileLog(&cfg.File) + err = InitFileLog(&cfg.File) + }) if err != nil { return errors.Trace(err) } - return nil }