diff --git a/server/embed/config_logging.go b/server/embed/config_logging.go index 1b0909221..7ab81191e 100644 --- a/server/embed/config_logging.go +++ b/server/embed/config_logging.go @@ -40,6 +40,26 @@ func (cfg Config) GetLogger() *zap.Logger { // for testing var grpcLogOnce = new(sync.Once) +func setupGrpcLogging(debug bool, config zap.Config) { + grpcLogOnce.Do(func() { + // debug true, enable info, warning, error + // debug false, only discard info + if debug { + var gl grpclog.LoggerV2 + gl, err := logutil.NewGRPCLoggerV2(config) + if err == nil { + grpclog.SetLoggerV2(gl) + } + } else { + grpclog.SetLoggerV2(grpclog.NewLoggerV2(ioutil.Discard, os.Stderr, os.Stderr)) + } + }) +} + +func SetupGrpcLoggingForTest(debug bool) { + setupGrpcLogging(debug, zap.NewDevelopmentConfig()) +} + // setupLogging initializes etcd logging. // Must be called after flag parsing or finishing configuring embed.Config. func (cfg *Config) setupLogging() error { @@ -106,19 +126,7 @@ func (cfg *Config) setupLogging() error { c.loggerConfig = &copied c.loggerCore = nil c.loggerWriteSyncer = nil - grpcLogOnce.Do(func() { - // debug true, enable info, warning, error - // debug false, only discard info - if cfg.LogLevel == "debug" { - var gl grpclog.LoggerV2 - gl, err = logutil.NewGRPCLoggerV2(copied) - if err == nil { - grpclog.SetLoggerV2(gl) - } - } else { - grpclog.SetLoggerV2(grpclog.NewLoggerV2(ioutil.Discard, os.Stderr, os.Stderr)) - } - }) + setupGrpcLogging(cfg.LogLevel == "debug", copied) return nil } } diff --git a/tests/integration/main_test.go b/tests/integration/main_test.go index a4c8fd237..cb47a9d78 100644 --- a/tests/integration/main_test.go +++ b/tests/integration/main_test.go @@ -8,8 +8,10 @@ import ( "testing" "go.etcd.io/etcd/pkg/v3/testutil" + "go.etcd.io/etcd/server/v3/embed" ) func TestMain(m *testing.M) { + embed.SetupGrpcLoggingForTest(true) testutil.MustTestMainWithLeakDetection(m) }