Logrus按需与syslog挂钩

问题描述

我正在使用golang logrus进行日志记录,并且拥有一个包装器,其中包含所有常规功能,例如Info(..)Infof(..)等,我想实现包装器功能{{1 }}记录到syslog。 我注意到logrus syslog hooks的问题是,一旦钩住了,每个日志功能都会记录到syslog中,我也不想Audit(..)记录到日志中。

有没有一种方法可以按需调用syslog?除了:

Infof(..)

谢谢

解决方法

如果您尝试按日志级别委派要发送的消息,则可以通过设置挂钩接受的日志级别来实现。

例如:

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,则您建议的内容可能有效,但感觉很奇怪,并且可能存在竞争条件。

我建议您做的是创建自己的钩子,该钩子会根据消息或调用Info,{{1}时传递的字段来获取钩子列表并路由到正确的钩子}等。