2016-09-12 62 views
0

我有一个golang项目,我试图用loggly作为日志记录在https://www.loggly.com/blog/logging-to-loggly-from-go-with-logrus-and-logrusly/Golang logrus日志发送到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.gomain()函数内部

代码的第二件作品是在utility.go它有一个程序包实用程序,我把这个函数称为utility.LogrusLogger(loglevel, message),只要我想要在该文件中导入程序包实用程序。 我很确定事情没有问题,因为我能够在程序控制台中看到日志。

回答

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