首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Logrus按需与syslog挂钩

Logrus按需与syslog挂钩
EN

Stack Overflow用户
提问于 2020-10-29 00:18:38
回答 1查看 396关注 0票数 1

我正在使用golang logrus来记录日志,并且我有一个包含所有常规函数的包装器,比如Info(..)Infof(..) e.t.c。我想实现一个包装器函数Audit(..)来记录到syslog。我注意到logrus syslog hooks的问题是,一旦它被挂起,每个日志函数都会记录到syslog,还有Infof(..),这是我不想让他们做的。

有没有办法按需调用syslog?除以下内容外:

代码语言:javascript
复制
func (l *WrapLogger) Audit(msg string) {
       l.logger.AddHook(syslogHook)
       l.logger.Info(msg)
       l.logger.ReplaceHooks(logrus.LevelHooks) // removing somehow the hook
}

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-29 22:05:30

如果您试图通过日志级别来指定要发送的消息,那么可以通过设置钩子接受的日志级别来实现。

例如:

代码语言:javascript
复制
log.AddHook(&writer.Hook{
    Writer: os.Stderr,
    LogLevels: []log.Level{ log.WarnLevel },
})
log.AddHook(lSyslog.NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, ""))
log.Info("This will go to syslog")
log.Warn("This will go to stderr")

如果你想根据日志级别路由这个no,那么你所建议的可能会起作用,但它感觉很奇怪,而且可能有竞争条件。

我建议你创建你自己的钩子,获得钩子列表,并根据消息或调用InfoWarn等时传递的字段路由到右钩子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64577011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档