我正在使用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")发布于 2017-06-28 15:47:27
您在代码中使用了两个不同的logrus.Logger变量。第一个是在init()中调用的,它是从logrus导出的全局默认记录器。稍后,在您的自定义初始化函数Init(logLevel int)中,您将通过logrus.New()创建一个新的记录器,该记录器从此用于日志记录-但尚未配置为使用不同的输出。
我建议去掉init()函数,在Init(logLevel int)中完成所有初始化(请注意设置输出的不同API )。
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
}
env := os.Getenv("ENV")
if env != "test" {
return
}
log.Out = ioutil.Discard
}https://stackoverflow.com/questions/44795041
复制相似问题