1 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
你將不得不稍微重新安排你的代碼,因?yàn)槟阒皇窃谔幚沓绦蛑袆?chuàng)建 UUID,這意味著它是特定于請(qǐng)求的,而記錄器是全局的......
但是要點(diǎn),特定于庫,是你必須創(chuàng)建一個(gè)子記錄器(事實(shí)上,你已經(jīng)在做:你只需要在那里傳遞字段)。任何后續(xù)寫入子記錄器的日志都將包含這些字段。
例如:
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 關(guān)注
- 161 瀏覽
添加回答
舉報(bào)