如何将钩子添加到 zap 记录器中?

Posted

技术标签:

【中文标题】如何将钩子添加到 zap 记录器中?【英文标题】:How to add a hook into a zap logger? 【发布时间】: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() 【参考方案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
))

【讨论】:

以上是关于如何将钩子添加到 zap 记录器中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Sentry 与 go.uber.org/zap/zapcore 记录器一起使用

如何使用 uber-go/zap 根据日志级别记录到标准输出或标准错误?

有没有办法在同一个 Zap 中使用 POST 和/或 PATCH 更新记录?

如何为滚动文件系统日志配置 uber-go/zap 记录器?

Go语言项目中使用zap日志库(翻译)

如何初始化一次 zap 记录器并在其他 Go 文件中重用它?