in main.go [100:146]
func initLogging(level string) {
var logger *zap.Logger
var err error
errorPriority := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
return lvl >= zapcore.ErrorLevel
})
minLogLevel := zapcore.InfoLevel
switch strings.ToUpper(level) {
case "DEBUG":
minLogLevel = zapcore.DebugLevel
case "INFO":
minLogLevel = zapcore.InfoLevel
case "WARN":
minLogLevel = zapcore.WarnLevel
case "ERROR":
minLogLevel = zapcore.ErrorLevel
}
infoPriority := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
return lvl < zapcore.ErrorLevel && lvl >= minLogLevel
})
consoleErrors := zapcore.Lock(os.Stderr)
consoleInfo := zapcore.Lock(os.Stdout)
encoderConf := zap.NewDevelopmentEncoderConfig()
encoderConf.EncodeLevel = zapcore.CapitalColorLevelEncoder
consoleEncoder := zapcore.NewConsoleEncoder(encoderConf)
core := zapcore.NewTee(
zapcore.NewCore(consoleEncoder, consoleErrors, errorPriority),
zapcore.NewCore(consoleEncoder, consoleInfo, infoPriority),
)
stackTraceEnabler := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
return lvl > zapcore.ErrorLevel
})
logger = zap.New(core, zap.AddStacktrace(stackTraceEnabler))
if err != nil {
zap.S().Fatalw("Failed to create logger", "error", err)
}
zap.ReplaceGlobals(logger.Named("crd-ref-docs"))
zap.RedirectStdLog(logger.Named("stdlog"))
}