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 关注
- 121 浏览
添加回答
举报