问题描述
我正在使用golang logrus进行日志记录,并且拥有一个包装器,其中包含所有常规功能,例如Info(..)
,Infof(..)
等,我想实现包装器功能{{1 }}记录到syslog。
我注意到logrus syslog hooks的问题是,一旦钩住了,每个日志功能都会记录到syslog中,我也不想Audit(..)
记录到日志中。
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}时传递的字段来获取钩子列表并路由到正确的钩子}等。