【发布时间】:2020-10-28 16:18:37
【问题描述】:
我正在使用 golang logrus 进行日志记录,并且我有一个包含所有常规函数的包装器,例如 Info(..)、Infof(..) 等我想实现一个包装器函数 Audit(..) 以记录到 syslog。
我注意到 logrus syslog hooks 的问题是,一旦它被钩住,每个日志函数都会记录到 syslog,还有 Infof(..) 我不希望他们这样做。
有没有一种方法可以按需调用 syslog?除了:
func (l *WrapLogger) Audit(msg string) {
l.logger.AddHook(syslogHook)
l.logger.Info(msg)
l.logger.ReplaceHooks(logrus.LevelHooks) // removing somehow the hook
}
谢谢
【问题讨论】:
-
我不确定我是否理解您的问题。您创建了两个
WrapLogger实例,如果您调用wl1.info("hello")它会在 syslog 中添加两次“hello”? -
不完全是@boaz_shuster,我只有 1 个日志包装器。我的主要问题:有没有办法控制将调用哪些钩子?现在我正在考虑它,也许我应该包装 2 个 logrus 实例:一个带有 syslog 钩子,另一个没有。