Zap 记录器是否支持转义字符 '\n' 和 '\t' 在日志输出中打印新行或制表符

问题描述

我正在使用 zap logger 的加糖记录器,我已按如下方式初始化 zap 记录器:

func InitLogger() {
    loggerMgr,err := logger.NewProduction()
    if err != nil {
        log.Println("error")
    }
    logger.ReplaceGlobals(loggerMgr)
    defer loggerMgr.Sync()
    logger := loggerMgr.Sugar()
    logger.Debug("START!")
}

我使用的日志语句如下:

zap.S().Errorf("Invalid thing_key: %s \n Please enter correct thing_key",payload.ThingKey)

我得到以下输出

{"level":"error","ts":1623216910.6660104,"caller":"db/water_meter.go:40","msg":"Invalid thing_key: 123 \n Please enter correct thing_key"}

但我期待输出如下:

{"level":"error","msg":"Invalid thing_key: 123 
Please enter correct thing_key"}

请提供有关如何获得此输出的任何建议

解决方法

Zap 输出日志为 json 格式,json 字符串中不允许有换行符。

使用 zap 库无法实现您的要求。