mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-30 15:05:27 +00:00
Merge pull request #103025 from serathius/logr-simplify
Simplify zap logger initialization
This commit is contained in:
commit
ae666361cd
@ -17,6 +17,7 @@ limitations under the License.
|
|||||||
package logs
|
package logs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/go-logr/logr"
|
"github.com/go-logr/logr"
|
||||||
@ -35,38 +36,25 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
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.
|
// NewJSONLogger creates a new json logr.Logger using the given Zap Logger to log.
|
||||||
func NewJSONLogger(w zapcore.WriteSyncer) logr.Logger {
|
func NewJSONLogger(w zapcore.WriteSyncer) logr.Logger {
|
||||||
l, _ := zapConfig.Build()
|
encoder := zapcore.NewJSONEncoder(encoderConfig)
|
||||||
l = l.WithOptions(zap.AddCallerSkip(1))
|
core := zapcore.NewCore(encoder, zapcore.AddSync(w), zapcore.DebugLevel)
|
||||||
if w != nil {
|
l := zap.New(core, zap.WithCaller(true), zap.AddCallerSkip(1))
|
||||||
l = l.WithOptions(zap.WrapCore(
|
|
||||||
func(zapcore.Core) zapcore.Core {
|
|
||||||
return zapcore.NewCore(zapcore.NewJSONEncoder(zapConfig.EncoderConfig), zapcore.AddSync(w), zapcore.DebugLevel)
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
return &zapLogger{l: l}
|
return &zapLogger{l: l}
|
||||||
}
|
}
|
||||||
|
|
||||||
var zapConfig = zap.Config{
|
var encoderConfig = zapcore.EncoderConfig{
|
||||||
Level: zap.NewAtomicLevelAt(zap.DebugLevel),
|
MessageKey: "msg",
|
||||||
Development: false,
|
|
||||||
Sampling: nil,
|
|
||||||
Encoding: "json",
|
|
||||||
EncoderConfig: zapcore.EncoderConfig{
|
|
||||||
MessageKey: "msg",
|
|
||||||
|
|
||||||
CallerKey: "caller",
|
CallerKey: "caller",
|
||||||
TimeKey: "ts",
|
TimeKey: "ts",
|
||||||
EncodeTime: epochMillisTimeEncoder,
|
EncodeTime: epochMillisTimeEncoder,
|
||||||
EncodeDuration: zapcore.StringDurationEncoder,
|
EncodeDuration: zapcore.StringDurationEncoder,
|
||||||
EncodeCaller: zapcore.ShortCallerEncoder,
|
EncodeCaller: zapcore.ShortCallerEncoder,
|
||||||
},
|
|
||||||
OutputPaths: []string{"stdout"},
|
|
||||||
ErrorOutputPaths: []string{"stderr"},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// this has the same implementation as zapcore.EpochMillisTimeEncoder but
|
// 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
|
// dPanic write message to DPanicLevel level log we need implement this because we need
|
||||||
// to have the "v" field as well.
|
// to have the "v" field as well.
|
||||||
func (l *zapLogger) dPanic(msg string) {
|
func (l *zapLogger) dPanic(msg string) {
|
||||||
@ -147,13 +142,6 @@ func (l *zapLogger) handleFields(args []interface{}, additional ...zap.Field) []
|
|||||||
return append(fields, additional...)
|
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 {
|
func handleError(err error) zap.Field {
|
||||||
return zap.NamedError("err", err)
|
return zap.NamedError("err", err)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user