From c6e340125501673d4e900dfc0efb2f4a1fc767d6 Mon Sep 17 00:00:00 2001 From: Gyuho Lee Date: Sun, 28 Jul 2019 22:18:23 -0500 Subject: [PATCH] etcdserver: make raft log configured by top level logger To make it consistent Signed-off-by: Gyuho Lee --- etcdserver/raft.go | 19 ++++++++++++------- pkg/logutil/zap_raft.go | 7 ++++++- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/etcdserver/raft.go b/etcdserver/raft.go index 8095288ce..c0fe97905 100644 --- a/etcdserver/raft.go +++ b/etcdserver/raft.go @@ -58,13 +58,6 @@ var ( ) func init() { - lcfg := logutil.DefaultZapLoggerConfig - lg, err := logutil.NewRaftLogger(&lcfg) - if err != nil { - log.Fatalf("cannot create raft logger %v", err) - } - raft.SetLogger(lg) - expvar.Publish("raft.status", expvar.Func(func() interface{} { raftStatusMu.Lock() defer raftStatusMu.Unlock() @@ -124,6 +117,18 @@ type raftNodeConfig struct { } func newRaftNode(cfg raftNodeConfig) *raftNode { + var lg raft.Logger + if cfg.lg != nil { + lg = logutil.NewRaftLoggerZap(cfg.lg) + } else { + lcfg := logutil.DefaultZapLoggerConfig + var err error + lg, err = logutil.NewRaftLogger(&lcfg) + if err != nil { + log.Fatalf("cannot create raft logger %v", err) + } + } + raft.SetLogger(lg) r := &raftNode{ lg: cfg.lg, tickMu: new(sync.Mutex), diff --git a/pkg/logutil/zap_raft.go b/pkg/logutil/zap_raft.go index e92cba04c..f016b3054 100644 --- a/pkg/logutil/zap_raft.go +++ b/pkg/logutil/zap_raft.go @@ -23,7 +23,7 @@ import ( "go.uber.org/zap/zapcore" ) -// NewRaftLogger converts "*zap.Logger" to "raft.Logger". +// NewRaftLogger builds "raft.Logger" from "*zap.Config". func NewRaftLogger(lcfg *zap.Config) (raft.Logger, error) { if lcfg == nil { return nil, errors.New("nil zap.Config") @@ -35,6 +35,11 @@ func NewRaftLogger(lcfg *zap.Config) (raft.Logger, error) { return &zapRaftLogger{lg: lg, sugar: lg.Sugar()}, nil } +// NewRaftLoggerZap converts "*zap.Logger" to "raft.Logger". +func NewRaftLoggerZap(lg *zap.Logger) raft.Logger { + return &zapRaftLogger{lg: lg, sugar: lg.Sugar()} +} + // NewRaftLoggerFromZapCore creates "raft.Logger" from "zap.Core" // and "zapcore.WriteSyncer". func NewRaftLoggerFromZapCore(cr zapcore.Core, syncer zapcore.WriteSyncer) raft.Logger {