mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge pull request #10409 from nolouch/add-logger
embed: add zap logger builder
This commit is contained in:
commit
cbfe0b4b79
@ -301,6 +301,9 @@ type Config struct {
|
|||||||
// Debug is true, to enable debug level logging.
|
// Debug is true, to enable debug level logging.
|
||||||
Debug bool `json:"debug"`
|
Debug bool `json:"debug"`
|
||||||
|
|
||||||
|
// ZapLoggerBuilder is used to build the zap logger.
|
||||||
|
ZapLoggerBuilder func(*Config) error
|
||||||
|
|
||||||
// logger logs server-side operations. The default is nil,
|
// logger logs server-side operations. The default is nil,
|
||||||
// and "setupLogging" must be called before starting server.
|
// and "setupLogging" must be called before starting server.
|
||||||
// Do not set logger directly.
|
// Do not set logger directly.
|
||||||
|
@ -186,28 +186,29 @@ func (cfg *Config) setupLogging() error {
|
|||||||
lcfg.Level = zap.NewAtomicLevelAt(zap.DebugLevel)
|
lcfg.Level = zap.NewAtomicLevelAt(zap.DebugLevel)
|
||||||
grpc.EnableTracing = true
|
grpc.EnableTracing = true
|
||||||
}
|
}
|
||||||
|
if cfg.ZapLoggerBuilder == nil {
|
||||||
var err error
|
cfg.ZapLoggerBuilder = func(c *Config) error {
|
||||||
cfg.logger, err = lcfg.Build()
|
var err error
|
||||||
if err != nil {
|
c.logger, err = lcfg.Build()
|
||||||
return err
|
if err != nil {
|
||||||
}
|
return err
|
||||||
|
}
|
||||||
cfg.loggerConfig = &lcfg
|
c.loggerMu.Lock()
|
||||||
cfg.loggerCore = nil
|
defer c.loggerMu.Unlock()
|
||||||
cfg.loggerWriteSyncer = nil
|
c.loggerConfig = &lcfg
|
||||||
|
c.loggerCore = nil
|
||||||
grpcLogOnce.Do(func() {
|
c.loggerWriteSyncer = nil
|
||||||
// debug true, enable info, warning, error
|
grpcLogOnce.Do(func() {
|
||||||
// debug false, only discard info
|
// debug true, enable info, warning, error
|
||||||
var gl grpclog.LoggerV2
|
// debug false, only discard info
|
||||||
gl, err = logutil.NewGRPCLoggerV2(lcfg)
|
var gl grpclog.LoggerV2
|
||||||
if err == nil {
|
gl, err = logutil.NewGRPCLoggerV2(lcfg)
|
||||||
grpclog.SetLoggerV2(gl)
|
if err == nil {
|
||||||
|
grpclog.SetLoggerV2(gl)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if len(cfg.LogOutputs) > 1 {
|
if len(cfg.LogOutputs) > 1 {
|
||||||
@ -237,17 +238,26 @@ func (cfg *Config) setupLogging() error {
|
|||||||
syncer,
|
syncer,
|
||||||
lvl,
|
lvl,
|
||||||
)
|
)
|
||||||
cfg.logger = zap.New(cr, zap.AddCaller(), zap.ErrorOutput(syncer))
|
if cfg.ZapLoggerBuilder == nil {
|
||||||
|
cfg.ZapLoggerBuilder = func(c *Config) error {
|
||||||
|
c.logger = zap.New(cr, zap.AddCaller(), zap.ErrorOutput(syncer))
|
||||||
|
c.loggerMu.Lock()
|
||||||
|
defer c.loggerMu.Unlock()
|
||||||
|
c.loggerConfig = nil
|
||||||
|
c.loggerCore = cr
|
||||||
|
c.loggerWriteSyncer = syncer
|
||||||
|
|
||||||
cfg.loggerConfig = nil
|
grpcLogOnce.Do(func() {
|
||||||
cfg.loggerCore = cr
|
grpclog.SetLoggerV2(logutil.NewGRPCLoggerV2FromZapCore(cr, syncer))
|
||||||
cfg.loggerWriteSyncer = syncer
|
})
|
||||||
|
return nil
|
||||||
grpcLogOnce.Do(func() {
|
}
|
||||||
grpclog.SetLoggerV2(logutil.NewGRPCLoggerV2FromZapCore(cr, syncer))
|
}
|
||||||
})
|
}
|
||||||
|
err := cfg.ZapLoggerBuilder(cfg)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
logTLSHandshakeFailure := func(conn *tls.Conn, err error) {
|
logTLSHandshakeFailure := func(conn *tls.Conn, err error) {
|
||||||
state := conn.ConnectionState()
|
state := conn.ConnectionState()
|
||||||
remoteAddr := conn.RemoteAddr().String()
|
remoteAddr := conn.RemoteAddr().String()
|
||||||
@ -284,3 +294,20 @@ func (cfg *Config) setupLogging() error {
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewZapCoreLoggerBuilder generates a zap core logger builder.
|
||||||
|
func NewZapCoreLoggerBuilder(lg *zap.Logger, cr zapcore.Core, syncer zapcore.WriteSyncer) func(*Config) error {
|
||||||
|
return func(cfg *Config) error {
|
||||||
|
cfg.loggerMu.Lock()
|
||||||
|
defer cfg.loggerMu.Unlock()
|
||||||
|
cfg.logger = lg
|
||||||
|
cfg.loggerConfig = nil
|
||||||
|
cfg.loggerCore = cr
|
||||||
|
cfg.loggerWriteSyncer = syncer
|
||||||
|
|
||||||
|
grpcLogOnce.Do(func() {
|
||||||
|
grpclog.SetLoggerV2(logutil.NewGRPCLoggerV2FromZapCore(cr, syncer))
|
||||||
|
})
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user