diff --git a/embed/etcd.go b/embed/etcd.go index e5da45ad80ff..d36d732a62c4 100644 --- a/embed/etcd.go +++ b/embed/etcd.go @@ -179,6 +179,7 @@ func StartEtcd(inCfg *Config) (e *Etcd, err error) { AuthToken: cfg.AuthToken, InitialCorruptCheck: cfg.ExperimentalInitialCorruptCheck, CorruptCheckTime: cfg.ExperimentalCorruptCheckTime, + Debug: cfg.Debug, } if e.Server, err = etcdserver.NewServer(srvcfg); err != nil { diff --git a/etcdserver/api/v3rpc/grpc.go b/etcdserver/api/v3rpc/grpc.go index 3fd8e864a0fa..ae6963a9ab82 100644 --- a/etcdserver/api/v3rpc/grpc.go +++ b/etcdserver/api/v3rpc/grpc.go @@ -16,11 +16,13 @@ package v3rpc import ( "crypto/tls" + "io/ioutil" "math" "os" "github.com/coreos/etcd/etcdserver" pb "github.com/coreos/etcd/etcdserver/etcdserverpb" + "github.com/coreos/etcd/gopath/src/google.golang.org/grpc/grpclog" "github.com/grpc-ecosystem/go-grpc-prometheus" "google.golang.org/grpc" @@ -36,10 +38,6 @@ const ( maxSendBytes = math.MaxInt32 ) -func init() { - grpclog.SetLoggerV2(grpclog.NewLoggerV2(os.Stderr, os.Stderr, os.Stderr)) -} - func Server(s *etcdserver.EtcdServer, tls *tls.Config, gopts ...grpc.ServerOption) *grpc.Server { var opts []grpc.ServerOption opts = append(opts, grpc.CustomCodec(&codec{})) @@ -70,5 +68,13 @@ func Server(s *etcdserver.EtcdServer, tls *tls.Config, gopts ...grpc.ServerOptio // set zero values for metrics registered for this grpc server grpc_prometheus.Register(grpcServer) + if s.Cfg.Debug { + grpc.EnableTracing = true + // enable info, warning, error + grpclog.SetLoggerV2(grpclog.NewLoggerV2(os.Stderr, os.Stderr, os.Stderr)) + } else { + // only discard info + grpclog.SetLoggerV2(grpclog.NewLoggerV2(ioutil.Discard, os.Stderr, os.Stderr)) + } return grpcServer } diff --git a/etcdserver/config.go b/etcdserver/config.go index 80d8219436e1..249e8d5fc131 100644 --- a/etcdserver/config.go +++ b/etcdserver/config.go @@ -70,6 +70,8 @@ type ServerConfig struct { // before serving any peer/client traffic. InitialCorruptCheck bool CorruptCheckTime time.Duration + + Debug bool } // VerifyBootstrap sanity-checks the initial config for bootstrap case