I had set up the zap logger with the following configuration
outLevel := zap.LevelEnablerFunc(func(level zapcore.Level) bool {
return level < zapcore.WarnLevel
})
// Warnings and everything above will be printed to stderr
errorLevel := zap.LevelEnablerFunc(func(level zapcore.Level) bool {
return level >= zapcore.WarnLevel
})
stdoutSyncer := zapcore.Lock(os.Stdout)
stderrSyncer := zapcore.Lock(os.Stderr)
config := zap.NewDevelopmentConfig()
config.EncoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
config.EncoderConfig.TimeKey = ""
core := zapcore.NewTee(
zapcore.NewCore(
zapcore.NewConsoleEncoder(config.EncoderConfig),
stdoutSyncer,
outLevel,
),
zapcore.NewCore(
zapcore.NewConsoleEncoder(config.EncoderConfig),
stderrSyncer,
errorLevel,
),
)
logger := zap.New(core)
zap.ReplaceGlobals(logger)
Help me understand if is it possible to prepend a prefix to every log message (DEBUG, INFO) something like what log library provides https://pkg.go.dev/log#SetPrefix
zap.L().Info("this is new message")
and the prefix is "=>"
The final log line would appear like this
"=> this is new message"
I tried with log.With
api but it seem to create a new json object which is different from what I need.