期间行家测试阶段禁用Log4J的日志(Disabling Log4J logs during mav

2019-07-05 16:20发布

跟踪并同时在IDE做开发的调试日志可以帮助,但在生成过程中我发现这些线路相当令人不安,并通过模糊处理的Maven或其他构建工具打印出来的报告。

这将是不错的log4j的履行就像一个系统属性-Dlog4j.rootLogger=OFF 1与Maven或一些东西,并不需要对项目文件的更改使用。 我知道我可以指定-Dlog4j.configuration=alternateconfig.props 2,但我请求在这里,以找出是否有人发现过程中以最小的人工干预生成过程中禁用记录一个更聪明的方法。 即一些java类检测行家呼叫者禁用log4j的,或其它智能的解决方案。

任何提示?

笔记:

[1]:已经尝试过了,它不工作。

[2]:这是相当不错的,但它似乎并没有与Maven很好地工作(也许万无一失跳过它)

Answer 1:

正如解释@artbristol (关于这个问题的评论),这可以在万无一失的配置。 它可以通过这种方式在pom.xml来完成:

        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <forkMode>always</forkMode>
                <systemPropertyVariables>
                    <log4j.configuration>file:${basedir}/etc/log4j-silent.properties</log4j.configuration>
                </systemPropertyVariables>
            </configuration>
        </plugin>

然后,将具有文件${basedir}/etc/log4j-silent.properties具有以下设置的伎俩:

log4j.rootLogger=OFF

log4j的试运行期间得到完全禁用的行家,一切都正常工作的IDE。

一个更好的解决办法是不要有额外的配置文件; 但无法找到它为止。



Answer 2:

指定不含附加器测试log4j的配置文件。

例如,如果你有一个log4j.properties src/main/resources ,然后将其复制到src/test/resouces ,要么删除附加器或设置日志级别致命的。



Answer 3:

根据前面的答案,我使用:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <forkMode>always</forkMode>
        <argLine>-Dlog4j.configuration=</argLine>
    </configuration>
</plugin>

Maven的输出显示有关log4j的未初始化的警告,但比它似乎工作等。



文章来源: Disabling Log4J logs during maven test phase