0

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.

Viren
  • 5,812
  • 6
  • 45
  • 98

0 Answers0