记录到多个输出

时间:2016-07-05 16:43:49

标签: logging go

go语言是否有办法在不同级别登录多个输出?

我希望有一个程序可以在Info级别中记录到stdout,同时在调试级别记录到带有时间戳的文件。

就像我每次编码一样:

log.Debug("Entering some func")
res := func()
log.Infof("Result was: %s", res)

我可以看到控制台打印:

Result was: Successful

一个文件:

2015-03-26T01:27:38-04:00 [DEBU]: Entering some func
2015-03-26T01:27:38-04:00 [INFO]: Result was: Successful

我使用logrus和glog,但找不到这个功能。是否有其他包或我能编码的东西?

2 个答案:

答案 0 :(得分:6)

Go-logging支持不同的日志后端,如文件,系统日志等。可以为每个后端和记录器设置不同日志级别的多个后端。 示例here

Lumberjack也可用于将日志写入滚动文件。这是一个example

答案 1 :(得分:1)

如果你使用go-logging库,你可以设置两个“后端”,它们将写入stdout和一个文件。

我会在这里复制一些代码,但wiki上的示例完全符合您的要求。