Golang logrus 日志在控制台中可用但未发送到 loggly
Golang logrus logs available in console but not being sent to loggly
我有一个 golang 项目,我正在尝试使用 loggly 日志记录,正如他们在 https://www.loggly.com/blog/logging-to-loggly-from-go-with-logrus-and-logrusly/
的博客中所解释的那样
问题是,对于他们的例子,一切都很好,但我有一堆文件和几十个函数(处理 API 调用),我不想重新初始化每次记录器实例。
这在 main.go
中非常有效
log := logrus.New()
hook := logrusly.NewLogglyHook(logglyToken, domain, logrus.WarnLevel, logglyUsername, logglyPassword)
log.Hooks.Add(hook)
log.Info("Welcome")
hook.Flush()
我可以在我的 loggly 帐户中看到这条消息。
但是,如果我这样做 -
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()
}
然后在调用这个函数时,日志可以在程序控制台看到,但在指定的loggly帐户中看不到。
我是否正确调用 hook.Flush() ? (因为我假设这是将日志发送到 loggly 服务器的地方)
附加信息:
第一段代码在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()
}
参考:
我有一个 golang 项目,我正在尝试使用 loggly 日志记录,正如他们在 https://www.loggly.com/blog/logging-to-loggly-from-go-with-logrus-and-logrusly/
的博客中所解释的那样问题是,对于他们的例子,一切都很好,但我有一堆文件和几十个函数(处理 API 调用),我不想重新初始化每次记录器实例。
这在 main.go
中非常有效log := logrus.New()
hook := logrusly.NewLogglyHook(logglyToken, domain, logrus.WarnLevel, logglyUsername, logglyPassword)
log.Hooks.Add(hook)
log.Info("Welcome")
hook.Flush()
我可以在我的 loggly 帐户中看到这条消息。
但是,如果我这样做 -
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()
}
然后在调用这个函数时,日志可以在程序控制台看到,但在指定的loggly帐户中看不到。 我是否正确调用 hook.Flush() ? (因为我假设这是将日志发送到 loggly 服务器的地方)
附加信息:
第一段代码在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()
}
参考: