我有一个golang项目,我正在尝试使用日志记录,正如他们的博客https://www.loggly.com/blog/logging-to-loggly-from-go-with-logrus-and-logrusly/
所解释的那样问题是,在他们的例子中,事情很好,但我有一堆文件和几十个函数(处理API调用),我不想每次都重新初始化logger实例。
在main.go
log := logrus.New()
hook := logrusly.NewLogglyHook(logglyToken, domain, logrus.WarnLevel, logglyUsername, logglyPassword)
log.Hooks.Add(hook)
log.Info("Welcome")
hook.Flush()
,我可以在我的logly帐户中看到这条消息。
但是,如果我这样做-
func LogrusLogger(loglevel string, message interface{}){
log := logrus.New()
hook := logrusly.NewLogglyHook(logglyToken, domain, logrus.WarnLevel, logglyUsername, logglyPassword)
log.Hooks.Add(hook)
log.Info(loglevel, message)
hook.Flush()
}
则在调用此函数时,可以在程序控制台中看到日志,但不能在指定的logly帐户中看到日志。我是否正确调用了hook.Flush() ?(因为我假设这是日志被发送到loglogly服务器的点)
额外的信息:第一段代码位于main.go
中main()
函数
第二段代码在utility.go
中,它有一个包实用程序,在该文件中导入包实用程序后,我将该函数调用为utility.LogrusLogger(loglevel, message)
。我很确定一切都很好,因为我可以在程序控制台中看到日志。
我能够通过全局声明以下内容来解决这个问题
log := logrus.New()
hook := logrusly.NewLogglyHook(logglyToken, domain, logrus.WarnLevel, logglyUsername, logglyPassword)
然后使用像这样的函数-
func LogrusInfo(args ...interface{}) {
logger.Hooks.Add(hook)
logger.Info(args...)
hook.Flush()
}
参考:https://stackoverflow.com/a/30261304/4720042