测试Buffalo应用时无法禁用INFO日志,求可行解决方法
解决Buffalo应用测试时无法禁用INFO日志的问题
我之前在测试Buffalo应用的时候也碰到过一模一样的困扰,折腾了几种方法都能有效搞定,分享给你:
方法1:通过环境变量临时设置
这是最快捷的临时方案,不用改代码或配置文件,直接在运行测试时指定日志级别就行:
LOG_LEVEL=error go test ./...
支持的日志级别包括debug、info、warn、error、fatal,设置为error或更高级别,就能直接屏蔽INFO及以下的日志输出。
方法2:修改测试环境配置文件
如果想让测试环境默认就禁用INFO日志,可以在config/environments/test.toml里添加日志配置(文件不存在的话直接新建一个):
[log] level = "error"
Buffalo会自动根据当前环境加载对应配置,测试时就会默认使用这个日志级别。
方法3:在测试代码中手动控制日志级别
要是需要更灵活的控制(比如只在某个测试用例里屏蔽INFO日志),可以在测试的初始化或setup函数里手动设置:
import ( "github.com/gobuffalo/buffalo" "github.com/gobuffalo/buffalo/logging" ) // 全局初始化时设置默认日志级别 func init() { buffalo.DefaultLogger.SetLevel(logging.ErrorLevel) } // 或者给单个测试的app实例单独设置 func TestMyFeature(t *testing.T) { app := buffalo.New(buffalo.Options{}) logger := logging.NewLogger(logging.Options{Level: "error"}) app.Logger = logger // 后续测试逻辑... }
如果遇到第三方库自己输出的INFO日志无法屏蔽的情况,可能需要单独针对该库的日志做配置,但Buffalo自身的INFO日志用上面的方法基本都能解决。
内容的提问来源于stack exchange,提问作者agbaraka
相关产品推荐
相关产品推荐

