From e37d6d6c6dc225c8ddf4dd7350557cbae42eea82 Mon Sep 17 00:00:00 2001 From: Marek Siarkowicz Date: Sun, 20 Jun 2021 16:09:25 +0200 Subject: [PATCH] Simplify zap logger initialization --- .../k8s.io/component-base/logs/json/json.go | 50 +++++++------------ 1 file changed, 19 insertions(+), 31 deletions(-) diff --git a/staging/src/k8s.io/component-base/logs/json/json.go b/staging/src/k8s.io/component-base/logs/json/json.go index 6c1b578f5b5..f9bca0f0346 100644 --- a/staging/src/k8s.io/component-base/logs/json/json.go +++ b/staging/src/k8s.io/component-base/logs/json/json.go @@ -17,6 +17,7 @@ limitations under the License. package logs import ( + "os" "time" "github.com/go-logr/logr" @@ -35,38 +36,25 @@ var ( ) func init() { - JSONLogger = NewJSONLogger(nil) + JSONLogger = NewJSONLogger(zapcore.Lock(os.Stdout)) } // NewJSONLogger creates a new json logr.Logger using the given Zap Logger to log. func NewJSONLogger(w zapcore.WriteSyncer) logr.Logger { - l, _ := zapConfig.Build() - l = l.WithOptions(zap.AddCallerSkip(1)) - if w != nil { - l = l.WithOptions(zap.WrapCore( - func(zapcore.Core) zapcore.Core { - return zapcore.NewCore(zapcore.NewJSONEncoder(zapConfig.EncoderConfig), zapcore.AddSync(w), zapcore.DebugLevel) - })) - } + encoder := zapcore.NewJSONEncoder(encoderConfig) + core := zapcore.NewCore(encoder, zapcore.AddSync(w), zapcore.DebugLevel) + l := zap.New(core, zap.WithCaller(true), zap.AddCallerSkip(1)) return &zapLogger{l: l} } -var zapConfig = zap.Config{ - Level: zap.NewAtomicLevelAt(zap.DebugLevel), - Development: false, - Sampling: nil, - Encoding: "json", - EncoderConfig: zapcore.EncoderConfig{ - MessageKey: "msg", +var encoderConfig = zapcore.EncoderConfig{ + MessageKey: "msg", - CallerKey: "caller", - TimeKey: "ts", - EncodeTime: epochMillisTimeEncoder, - EncodeDuration: zapcore.StringDurationEncoder, - EncodeCaller: zapcore.ShortCallerEncoder, - }, - OutputPaths: []string{"stdout"}, - ErrorOutputPaths: []string{"stderr"}, + CallerKey: "caller", + TimeKey: "ts", + EncodeTime: epochMillisTimeEncoder, + EncodeDuration: zapcore.StringDurationEncoder, + EncodeCaller: zapcore.ShortCallerEncoder, } // this has the same implementation as zapcore.EpochMillisTimeEncoder but @@ -100,6 +88,13 @@ func (l *zapLogger) Info(msg string, keysAndVals ...interface{}) { } } +// Error write log message to error level +func (l *zapLogger) Error(err error, msg string, keysAndVals ...interface{}) { + if checkedEntry := l.l.Check(zap.ErrorLevel, msg); checkedEntry != nil { + checkedEntry.Write(l.handleFields(keysAndVals, handleError(err))...) + } +} + // dPanic write message to DPanicLevel level log we need implement this because we need // to have the "v" field as well. func (l *zapLogger) dPanic(msg string) { @@ -147,13 +142,6 @@ func (l *zapLogger) handleFields(args []interface{}, additional ...zap.Field) [] return append(fields, additional...) } -// Error write log message to error level -func (l *zapLogger) Error(err error, msg string, keysAndVals ...interface{}) { - if checkedEntry := l.l.Check(zap.ErrorLevel, msg); checkedEntry != nil { - checkedEntry.Write(l.handleFields(keysAndVals, handleError(err))...) - } -} - func handleError(err error) zap.Field { return zap.NamedError("err", err) }