gpt4 book ai didi

go - Logrus 根据需要与 syslog Hook

转载 作者:行者123 更新时间:2023-12-03 10:09:34 27 4
gpt4 key购买 nike

我正在使用 golang logrus用于记录,我有一个包含所有常规功能的包装器,如 Info(..) , Infof(..) e.t.c 我想实现一个包装函数 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
}
谢谢

最佳答案

如果您尝试通过其日志级别委派要发送的消息,那么您可以通过设置 Hook 接受的日志级别来做到这一点。
例如:

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")
如果您想根据日志级别路由此否,那么您的建议可能有效,但感觉很奇怪并且可能有竞争条件。
我建议你做的是创建自己的钩子(Hook),获取钩子(Hook)列表并根据消息或调用时传递的字段路由到正确的钩子(Hook) Info , Warn等等。

关于go - Logrus 根据需要与 syslog Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64577011/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com