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 關注
- 169 瀏覽
添加回答
舉報