【问题标题】:How to add a hook into a zap logger?如何将钩子添加到 zap 记录器中?
【发布时间】:2021-02-24 10:35:41
【问题描述】:

我尝试使用WithOptions 添加钩子,但没有打印任何内容来捕获一些日志事件:

    logger.WithOptions(zap.Hooks(func(entry zapcore.Entry) error {
        fmt.Println("test hooks test hooks")
        return nil
    }))

【问题讨论】:

  • 你有没有忘记defer logger.Sync()

标签: go go-zap


【解决方案1】:

来自documentation

func (log *Logger) WithOptions(opts ...Option) *Logger

WithOptions 克隆当前记录器,应用提供的选项,并返回结果记录器。同时使用是安全的。

请注意,它会克隆一个新的记录器,而不是修改记录器。因此,您应该像这样重新分配记录器变量(或定义一个新变量):

logger = logger.WithOptions(zap.Hooks(func(entry zapcore.Entry) error {
    fmt.Println("test hooks test hooks")
    return nil
}))

【讨论】: