首页 > 解决方案 > Zap logger 是否支持转义字符 '\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","ts":1623216910.6660104,"caller":"db/water_meter.go:40","msg":"Invalid thing_key: 123 
Please enter correct thing_key"}

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

标签: gologginggo-zap

解决方案


json 格式的 Zap 输出日志和 json 字符串中不允许出现换行符。

这是不可能做到你对zap图书馆要求的。


推荐阅读