【发布时间】:2017-06-28 06:24:34
【问题描述】:
我正在使用Logrus 包来登录我的项目。
一切都很好,但出于测试目的,我不需要显示 logrus 输出。
我正在查看logrus.SetOuput 的答案。
所以基本上我希望将日志写入/dev/null
但由于某种原因,我仍然在 STDOUT 上看到日志
// This code run right at the start
if env == "test" {
fmt.Println("Entering test mode ....")
logrus.SetOutput(ioutil.Discard)
return
}
我的记录器设置如下所示
// logger.go
package logger
import(
"os"
"io/ioutil"
"github.com/Sirupsen/logrus"
)
var log *logrus.Logger
const (
DEBUG = 0
INFO = 1
WARNING = 2
ERROR = 3
)
func init() {
env := os.GetEnv("ENV")
if env != "test" {
return
}
logrus.SetOutput(ioutil.Discard)
}
func Init(logLevl int) {
log = logrus.New()
log.Formatter = &logrus.TextFormatter{FullTimestamp: true}
switch logLevl {
case DEBUG:
log.Level = logrus.DebugLevel
case INFO:
log.Level = logrus.InfoLevel
case WARNING:
log.Level = logrus.WarnLevel
case ERROR:
log.Level = logrus.ErrorLevel
}
}
func Get() *logrus.Logger {
return log
}
func I(args ...interface{}) {
log.Info(args)
}
func Df(format string, args ...interface{}) {
log.Debugf(format, args)
}
func D(args ...interface{}) {
log.Debug(args)
}
func W(args ...interface{}) {
log.Warn(args)
}
这里是我如何使用logger 包
import "logger"
func init() {
logger.Init(0)
}
logger.D("Dummy string")
【问题讨论】:
-
@mattn SetOutput() 在包级别配置 logrus 的导出标准记录器(c.f.,github.com/sirupsen/logrus/blob/master/exported.go)
-
@fhe 如果通过 New() 谈论新变量,并使用 logrus.SetOutput() (即 std)进行修改,我认为它可能是不同的行为。或获取 &Logger{}。
-
@mattn 希望对您有所帮助。