1 回答
TA贡献1815条经验 获得超6个赞
你将不得不稍微重新安排你的代码,因为你只是在处理程序中创建 UUID,这意味着它是特定于请求的,而记录器是全局的......
但是要点,特定于库,是你必须创建一个子记录器(事实上,你已经在做:你只需要在那里传递字段)。任何后续写入子记录器的日志都将包含这些字段。
例如:
func main() {
logger := InitLogger(zap.String("foo", "bar"))
logger.Info("First message with our `foo` key")
logger.Info("Second message with our `foo` key")
}
func InitLogger(fields ...zap.Field) *zap.Logger {
config := zap.NewProductionEncoderConfig()
config.EncodeTime = zapcore.RFC3339TimeEncoder
consoleEncoder := zapcore.NewJSONEncoder(config)
core := zapcore.NewTee(zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), zapcore.InfoLevel))
return zap.New(core).With(fields...)
}
输出:
{"level":"info","ts":"2022-11-24T18:30:45+01:00","msg":"First message with our `foo` key","foo":"bar"}
{"level":"info","ts":"2022-11-24T18:30:45+01:00","msg":"Second message with our `foo` key","foo":"bar"}
- 1 回答
- 0 关注
- 129 浏览
添加回答
举报