【问题标题】:Golang logrus logs available in console but not being sent to logglyGolang logrus 日志在控制台中可用,但未发送到 loggly
【发布时间】:2017-01-19 12:51:37
【问题描述】:

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

【问题讨论】:

    标签: logging go gorilla loggly


    【解决方案1】:

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

    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

    【讨论】:

      猜你喜欢
      • 2019-09-20
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      相关资源
      最近更新 更多