如何在测试期间覆盖log4j.properties?

2022-09-02 20:51:04

我正在尝试在 maven 中测试期间将所有消息记录到控制台。为此,我创建了一个文件 ,该文件将覆盖我已经在.不幸的是,这种压倒一切的做法并没有发生。为什么以及如何解决它?DEBUGsrc/test/resources/log4j.propertiessrc/main/resources/log4j.properties


答案 1

将测试配置文件重命名为例如 并将 log4j 配置为在 surefire 执行期间拾取它:log4j-surefire.properties

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.6</version>
    <configuration>
        <systemPropertyVariables>
            <log4j.configuration>file:${project.build.testOutputDirectory}/log4j-surefire.properties</log4j.configuration>
        </systemPropertyVariables>
    </configuration>
</plugin>

答案 2

它应该按原样工作,并且有效。问题出在其他地方。

ps. 我的类路径中的记录器搞得一团糟:jog4j,slf4j,logback(来自其他依赖项)。据我所知,它们都处于冲突之中。我还没有清理这个烂摊子,我仍然不知道如何使所有软件包都使用一个日志记录设施和一个配置。


推荐