Go语言 如何自定义日志格式时,使用zap?

n8ghc7c1  于 2023-03-06  发布在  Go
关注(0)|答案(3)|浏览(194)

目前,我们项目的日志格式如下:

www.abcdef.com`3`1s

我想使用去重写项目和导入zap作为日志工具。通过zap日志的格式如下:

{"url": "www.abcdef.com", "attempt": 3, "backoff": "1s"}

我谷歌它的用法,但我没有找到任何方法,改变zap的格式,以上述提到的,所以我想寻求一些建议在这里。

tct7dpnv

tct7dpnv1#

设置EncoderConfig

cfg := zapcore.EncoderConfig{ 
    TimeKey: "", 
    LevelKey: "", 
    NameKey: "", 
    CallerKey: "", 
    MessageKey: "M", 
    StacktraceKey: "",
}
sczxawaw

sczxawaw2#

Zap允许customize encoders。在链接的文章中,作者将EncoderConfig的一个字段EncodeLevel设置为一个自定义函数。这样,您就可以更改日志级别、时间戳、持续时间、调用者和日志名称的编码。
您也可以使用zap.RegisterEncoder添加您的自定义编码器,然后将config中的Encoding字段设置为您的编码器的名称。
请记住,编码器用于日志方法的每次调用,因此它必须具有良好的性能。

ddarikpa

ddarikpa3#

配置示例如下:

config := zap.NewProductionConfig()

        config.EncoderConfig.EncodeTime = zapcore.TimeEncoderOfLayout(time.RFC3339)

        logger, _ := config.Build()

检查源代码中的EncoderConfig,了解可以自定义的内容:
https://github.com/uber-go/zap/blob/master/zapcore/encoder.go#L316

相关问题