我反复遇到过Grails在版本1.1中引入的用于配置Log4J的DSL问题。我当前的配置如下所示:
log4j = {
debug 'com.mypackages'
appenders {
console name: 'stdout', layout: pattern(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %c{1} - %m%n')
rollingFile name: 'hibeFile', file: "hibeFile", maxFileSize: '500KB'
}
// By default, messages are logged at the error level to both the console and hibeFile
root {
error 'stdout', 'hibeFile'
additivity = true
}
}
目的是:
com.mypackages
,在错误级别记录所有其他当我运行应用程序或集成测试时,这工作正常。但是,当我运行单元测试时,控制台或Grails测试报告中显示的“System.out”或“System.err”链接中都没有日志记录。运行单元测试时如何查看日志?
谢谢,
唐
最佳答案
AFAIK,在运行Grails单元测试时,无法通过log4j进行整个日志记录,仅使用来模拟域类中的log.xxxx调用。
mockLogging(ClassUnderTest, true)
“true”代表“启用调试”。为此,单元测试类必须扩展GrailsUnitTestCase。
如果使用mockController(class),它将隐式调用mockLogging(class,false),因此不会获得调试日志记录。有关详细信息,请查看grails源,尤其是GrailsUnitTestCase和MockUtils。
与上述相反,在集成测试中,将启动整个机器,并且log4j可用。