func Configure()

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()
	}
}