首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法发送logrus输出/dev/null

无法发送logrus输出/dev/null
EN

Stack Overflow用户
提问于 2017-06-28 14:24:34
回答 1查看 1.8K关注 0票数 0

我正在使用Logrus包来登录我的项目。

一切都很好,但出于测试目的,我不需要显示logrus输出。

我在logrus.SetOuput上寻找答案。

因此,基本上我希望将日志写入/dev/null

但出于某种原因,我仍然看到STDOUT上的日志

代码语言:javascript
复制
   // This code run right at the start
   if env == "test" {
        fmt.Println("Entering test mode ....")
        logrus.SetOutput(ioutil.Discard)
        return
    }

下面是我的记录器设置

代码语言:javascript
复制
// 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

代码语言:javascript
复制
import "logger"

func init() {
  logger.Init(0)
}

logger.D("Dummy string")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-28 15:47:27

您在代码中使用了两个不同的logrus.Logger变量。第一个是在init()中调用的,它是从logrus导出的全局默认记录器。稍后,在您的自定义初始化函数Init(logLevel int)中,您将通过logrus.New()创建一个新的记录器,该记录器从此用于日志记录-但尚未配置为使用不同的输出。

我建议去掉init()函数,在Init(logLevel int)中完成所有初始化(请注意设置输出的不同API )。

代码语言:javascript
复制
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
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44795041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档