in pkg/log/logger.go [47:93]
func Configure(flagSets *pflag.FlagSet, serviceType string, serviceVersion string) func() {
verbosity := defaultVerbosity
verbosityFlag := flagSets.Lookup("v")
if verbosityFlag != nil {
verbosity, _ = strconv.Atoi(verbosityFlag.Value.String())
}
zapLevel := zapcore.Level(verbosity * -1)
// using ecszap module to generate new zap.Core for zap.Logger
encoderConfig := ecszap.NewDefaultEncoderConfig()
core := ecszap.NewCore(encoderConfig, os.Stderr, zapLevel)
// using zap module to generate zap.logger
zapLogger := zap.
New(
core, // ECS core
zap.AddCaller(), // populate caller
zap.AddStacktrace(zapcore.ErrorLevel), // populate stack trace
zap.WrapCore((&apmzap.Core{}).WrapCore), // sends errors to APM
).
With(
zap.String("service.type", serviceType),
zap.String("service.version", serviceVersion),
)
// using zapr module to generate logr.Logger
logger = zapr.NewLogger(zapLogger)
// enable k8s client logging only at debug log level
if verbosity > 0 {
klog.SetLogger(logger.WithName("k8s"))
} else {
// muted at info/error log level
klog.SetLogger(zapr.NewLogger(zap.New(nil)))
}
// Propagate the set log level to klog
flagset := flag.NewFlagSet("", flag.ContinueOnError)
klog.InitFlags(flagset)
_ = flagset.Set("v", strconv.Itoa(verbosity))
logs.InitLogs()
return func() {
logs.FlushLogs()
}
}