在 maven 测试阶段禁用 Log4J 日志

2022-09-02 00:58:07

在IDE中进行开发时,跟踪和调试日志可能会有所帮助,但在构建过程中,我发现这些行非常令人不安,并且混淆了maven或其他构建工具打印出来的报告。

如果 log4j 能够支持像 1 这样的系统属性,以便与 maven 或不需要对项目文件进行更改的内容一起使用,那就太好了。我知道我可以指定2,但我在这里要求找出是否有人找到了一种更智能的方法,可以在构建过程中以最少的手动干预禁用日志记录。即,一些java类将maven检测为禁用log4j的调用方,或其他智能解决方案。-Dlog4j.rootLogger=OFF-Dlog4j.configuration=alternateconfig.props

任何提示?

笔记:

[1]:已经尝试过,但它不起作用。

[2]:这很好,但它似乎不能很好地与maven一起使用(也许surefire跳过了它)


答案 1

正如(对问题的评论)所解释的那样,这可以在surefire中配置。它可以在pom中以这种方式完成.xml:@artbristol

        <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 在 maven 中的测试运行期间被完全禁用,并且在 IDE 中一切正常。

更好的解决方案是没有额外的配置文件;但到目前为止还找不到。


答案 2

指定不带追加器的测试 log4j 配置文件。

例如,如果在 中有 log4j.properties,则将其复制到并删除追加器或将日志级别设置为致命。src/main/resourcessrc/test/resouces


推荐