目前,我们项目的日志格式如下:
www.abcdef.com`3`1s
我想使用去重写项目和导入zap作为日志工具。通过zap日志的格式如下:
{"url": "www.abcdef.com", "attempt": 3, "backoff": "1s"}
我谷歌它的用法,但我没有找到任何方法,改变zap的格式,以上述提到的,所以我想寻求一些建议在这里。
tct7dpnv1#
设置EncoderConfig
EncoderConfig
cfg := zapcore.EncoderConfig{ TimeKey: "", LevelKey: "", NameKey: "", CallerKey: "", MessageKey: "M", StacktraceKey: "", }
sczxawaw2#
Zap允许customize encoders。在链接的文章中,作者将EncoderConfig的一个字段EncodeLevel设置为一个自定义函数。这样,您就可以更改日志级别、时间戳、持续时间、调用者和日志名称的编码。您也可以使用zap.RegisterEncoder添加您的自定义编码器,然后将config中的Encoding字段设置为您的编码器的名称。请记住,编码器用于日志方法的每次调用,因此它必须具有良好的性能。
EncodeLevel
Encoding
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
3条答案
按热度按时间tct7dpnv1#
设置
EncoderConfig
sczxawaw2#
Zap允许customize encoders。在链接的文章中,作者将EncoderConfig的一个字段
EncodeLevel
设置为一个自定义函数。这样,您就可以更改日志级别、时间戳、持续时间、调用者和日志名称的编码。您也可以使用zap.RegisterEncoder添加您的自定义编码器,然后将config中的
Encoding
字段设置为您的编码器的名称。请记住,编码器用于日志方法的每次调用,因此它必须具有良好的性能。
ddarikpa3#
配置示例如下:
检查源代码中的
EncoderConfig
,了解可以自定义的内容:https://github.com/uber-go/zap/blob/master/zapcore/encoder.go#L316