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

How to add a hook into a zap logger?

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

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

来自documentation

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

WithOptions clones the current Logger, applies the supplied Options, and returns the resulting Logger. It's safe to use concurrently.

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

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