从测试中转发commons-logging消息

时间:2011-12-03 17:48:44

标签: logging gradle

在使用gradle运行junit测试时,我很难找到有关如何显示Logging输出的详细信息。为了保持与Logger无关,我在项目中使用Apache commons-logging。

现在我找到了这个,但它并没有真正解释任何事情:Gradle java.util.logging.Logger output in unit tests

使用http://gradle.org/logging我很好地理解了如何从gradle任务中记录,而不是如何从我的测试中显示记录消息。

gradle -i也不是我想要的。虽然这给了我一些关于测试的信息,但它没有给我记录输出。

我很欣赏正确方向的任何提示。



编辑(这是在这里做的,因为对Peter的回答是相当长的回答):

添加

test {
testLogging.showStandardStreams = true
}
工作,有点儿。这是Gradle 1.0-milestone-6功能,所以我首先必须升级Gradle。 然后,找不到我在src / test / java文件夹中的log4j.properties。添加

sourceSets.test.runtimeClasspath += files(sourceSets.test.java.srcDirs)

到build.gradle文件至少使警告静音,但我没有记录输出。我的log4j.xml应该不是问题,它在IDE中有效:

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
    </layout>
</appender>


<root>
    <priority value="info"/>
    <appender-ref ref="console"/>
</root>

</log4j:configuration>

为了完整起见,我用Google搜索showStandardStream并找到了我应该找到的信息:http://gradle.org/current/docs/dsl/org.gradle.api.tasks.testing.Test.html

问题仍然存在,因为它似乎不起作用:)

EDIT2:

现在gradle test -i打印记录信息输出。虽然它不是我想要的(因为它与gradle日志记录混合),但这已经足够了。

1 个答案:

答案 0 :(得分:2)

您可以将test.testLogging.showStandardStreams设置为true,然后确保将测试日志记录打印到std out。这将使日志记录输出同时出现在命令行和测试报告中。