我反复遇到过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,在错误级别记录所有其他
  • 将所有输出记录到名为hibeFile和控制台
  • 的文件中

    当我运行应用程序或集成测试时,这工作正常。但是,当我运行单元测试时,控制台或Grails测试报告中显示的“System.out”或“System.err”链接中都没有日志记录。运行单元测试时如何查看日志?

    谢谢,

    最佳答案

    AFAIK,在运行Grails单元测试时,无法通过log4j进行整个日志记录,仅使用来模拟域类中的log.xxxx调用。

    mockLogging(ClassUnderTest, true)
    

    “true”代表“启用调试”。为此,单元测试类必须扩展GrailsUnitTestCase。
    如果使用mockController(class),它将隐式调用mockLogging(class,false),因此不会获得调试日志记录。有关详细信息,请查看grails源,尤其是GrailsUnitTestCase和MockUtils。

    与上述相反,在集成测试中,将启动整个机器,并且log4j可用。

    09-10 08:07