Browse Source

etcdserver: add "LoggerCore" field for Raft logger

Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
Gyuho Lee 7 years ago
parent
commit
3ea7a5d0bd
2 changed files with 29 additions and 10 deletions
  1. 8 1
      etcdserver/config.go
  2. 21 9
      etcdserver/raft.go

+ 8 - 1
etcdserver/config.go

@@ -27,6 +27,7 @@ import (
 	"github.com/coreos/etcd/pkg/types"
 
 	"go.uber.org/zap"
+	"go.uber.org/zap/zapcore"
 )
 
 // ServerConfig holds the configuration of etcd as taken from the command line or discovery.
@@ -115,8 +116,14 @@ type ServerConfig struct {
 	// Logger logs server-side operations.
 	// If not nil, it disables "capnslog" and uses the given logger.
 	Logger *zap.Logger
+
 	// LoggerConfig is server logger configuration for Raft logger.
-	LoggerConfig zap.Config
+	// Must be either: "LoggerConfig != nil" or "LoggerCore != nil && LoggerWriteSyncer != nil".
+	LoggerConfig *zap.Config
+	// LoggerCore is "zapcore.Core" for raft logger.
+	// Must be either: "LoggerConfig != nil" or "LoggerCore != nil && LoggerWriteSyncer != nil".
+	LoggerCore        zapcore.Core
+	LoggerWriteSyncer zapcore.WriteSyncer
 
 	Debug bool
 

+ 21 - 9
etcdserver/raft.go

@@ -468,9 +468,13 @@ func startNode(cfg ServerConfig, cl *membership.RaftCluster, ids []types.ID) (id
 	}
 	if cfg.Logger != nil {
 		// called after capnslog setting in "init" function
-		c.Logger, err = logutil.NewRaftLogger(cfg.LoggerConfig)
-		if err != nil {
-			log.Fatalf("cannot create raft logger %v", err)
+		if cfg.LoggerConfig != nil {
+			c.Logger, err = logutil.NewRaftLogger(cfg.LoggerConfig)
+			if err != nil {
+				log.Fatalf("cannot create raft logger %v", err)
+			}
+		} else if cfg.LoggerCore != nil && cfg.LoggerWriteSyncer != nil {
+			c.Logger = logutil.NewRaftLoggerFromZapCore(cfg.LoggerCore, cfg.LoggerWriteSyncer)
 		}
 	}
 
@@ -519,9 +523,13 @@ func restartNode(cfg ServerConfig, snapshot *raftpb.Snapshot) (types.ID, *member
 	if cfg.Logger != nil {
 		// called after capnslog setting in "init" function
 		var err error
-		c.Logger, err = logutil.NewRaftLogger(cfg.LoggerConfig)
-		if err != nil {
-			log.Fatalf("cannot create raft logger %v", err)
+		if cfg.LoggerConfig != nil {
+			c.Logger, err = logutil.NewRaftLogger(cfg.LoggerConfig)
+			if err != nil {
+				log.Fatalf("cannot create raft logger %v", err)
+			}
+		} else if cfg.LoggerCore != nil && cfg.LoggerWriteSyncer != nil {
+			c.Logger = logutil.NewRaftLoggerFromZapCore(cfg.LoggerCore, cfg.LoggerWriteSyncer)
 		}
 	}
 
@@ -611,9 +619,13 @@ func restartAsStandaloneNode(cfg ServerConfig, snapshot *raftpb.Snapshot) (types
 	}
 	if cfg.Logger != nil {
 		// called after capnslog setting in "init" function
-		c.Logger, err = logutil.NewRaftLogger(cfg.LoggerConfig)
-		if err != nil {
-			log.Fatalf("cannot create raft logger %v", err)
+		if cfg.LoggerConfig != nil {
+			c.Logger, err = logutil.NewRaftLogger(cfg.LoggerConfig)
+			if err != nil {
+				log.Fatalf("cannot create raft logger %v", err)
+			}
+		} else if cfg.LoggerCore != nil && cfg.LoggerWriteSyncer != nil {
+			c.Logger = logutil.NewRaftLoggerFromZapCore(cfg.LoggerCore, cfg.LoggerWriteSyncer)
 		}
 	}