0

我有一个 golang 项目,我正在尝试按照他们在https://www.loggly.com/blog/logging-to-loggly-from-go-with-logrus-and-logrusly/的博客中的说明使用 loggly 日志记录

问题是,在他们的例子中,一切都很好,但我有一堆文件和几十个函数(处理 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)我很确定一切都很好,因为我可以在程序控制台中看到日志。

4

1 回答 1

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

于 2016-09-29T04:48:24.573 回答