Golang logrus日志在控制台中可用,但没有发送到loggly

时间:2016-09-12 06:15:36

标签: logging go gorilla loggly

我有一个golang项目,我正在尝试使用loggly日志记录,正如他们在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()

我可以在我的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)。 我很确定一切都很好,因为我能够在程序控制台中看到日志。

1 个答案:

答案 0 :(得分:0)

我能够通过全局声明以下内容来解决问题

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