1 回答

TA貢獻1824條經驗 獲得超5個贊
似乎有一種構造方法func New(core zapcore.Core, options ...Option)(https://github.com/uber-go/zap/blob/master/logger.go#L67)因為Core有一種構造方法func NewCore(enc Encoder, ws WriteSyncer, enab LevelEnabler)(https://github.com/uber-go/ zap/blob/master/zapcore/core.go#L58 ),ws指定將數據寫入的位置。您可以直接設置 abytes.Buffer并WriteSyncer傳遞它。
請注意,對于日志記錄中發生的錯誤,似乎需要WriteSyncer設置另一個錯誤。當你創建一個新的記錄器時,你可以傳遞一個ErrorOutput選項(https://github.com/uber-go/zap/blob/master/options.go#L55 )。
這是一個草圖:
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
var buff bytes.Buffer
var errorBuff bytes.Buffer
logger := zap.New(
zapcore.NewCore(zapcore.NewJSONEncoder(
zapcore.EncoderConfig{}), zapcore.AddSync(&buff),
zapcore.DPanicLevel
),
zap.ErrorOutput(zapcore.AddSync(&errorBuff)),
)
- 1 回答
- 0 關注
- 151 瀏覽