From c1aa7a0fe73cbcab8e70f7b73a845ae9394f9a71 Mon Sep 17 00:00:00 2001 From: Nic Cope Date: Fri, 29 Jul 2022 14:26:31 -0700 Subject: [PATCH] Copy etcd client debug level logic from upstream Replicated from https://github.com/etcd-io/etcd/blob/v3.5.4/client/v3/logger.go#L47 The logic of this function doesn't make a lot of sense to me, but copying it will avoid any behaviour change. Signed-off-by: Nic Cope --- .../storage/storagebackend/factory/etcd3.go | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go b/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go index 541502900eb..8a6c0ae57f2 100644 --- a/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go +++ b/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go @@ -19,8 +19,10 @@ package factory import ( "context" "fmt" + "log" "net" "net/url" + "os" "path" "strings" "sync" @@ -82,13 +84,29 @@ func init() { legacyregistry.RawMustRegister(grpcprom.DefaultClientMetrics) dbMetricsMonitors = make(map[string]struct{}) - l, err := logutil.CreateDefaultZapLogger(zapcore.InfoLevel) + l, err := logutil.CreateDefaultZapLogger(etcdClientDebugLevel()) if err != nil { l = zap.NewNop() } etcd3ClientLogger = l.Named("etcd-client") } +// etcdClientDebugLevel translates ETCD_CLIENT_DEBUG into zap log level. +// NOTE(negz): This is a copy of a private etcd client function: +// https://github.com/etcd-io/etcd/blob/v3.5.4/client/v3/logger.go#L47 +func etcdClientDebugLevel() zapcore.Level { + envLevel := os.Getenv("ETCD_CLIENT_DEBUG") + if envLevel == "" || envLevel == "true" { + return zapcore.InfoLevel + } + var l zapcore.Level + if err := l.Set(envLevel); err == nil { + log.Printf("Deprecated env ETCD_CLIENT_DEBUG value. Using default level: 'info'") + return zapcore.InfoLevel + } + return l +} + func newETCD3HealthCheck(c storagebackend.Config, stopCh <-chan struct{}) (func() error, error) { timeout := storagebackend.DefaultHealthcheckTimeout if c.HealthcheckTimeout != time.Duration(0) {