一尘不染

在Junit测试期间如何将日志级别设置为DEBUG?

java

我将SLF4J与LOG4J一起使用,并且配置通常在中log4j.properties,并且它将日志级别设置为INFO。

但是,在测试期间,我想将日志设置为DEBUG。

我看不到一种自动执行此操作的方法,也无法让类似的内容log4j.tests.properties仅在测试期间加载。

因此,我尝试在测试设置(@BeforeClass)中以编程方式执行此操作:

LogManager.getRootLogger().setLevel(Level.ALL);

没有成功…

我正在使用以下版本:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.5</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.5</version>
    </dependency>

我怎样才能达到这个结果?

编辑:
我认为我还不够清楚。这个问题不是关于设置正确的日志级别…而是关于在运行Junit测试时设置DEBUG日志级别,以及在任何其他情况下设置INFO日志级别。我想使它自动化。


阅读 1822

收藏
2020-12-03

共1个答案

一尘不染

您无需为JVM提供其他日志实现。

日志记录代码log4j.properties使用类路径搜索文件。因此,您需要做的就是确保测试log4j.properties文件位于发布文件之前的位置。

我使用Maven,它使目录中的文件布局变得容易。我的发布log4j.properties在目录中src/main/resources。我的测试版本进入src/test/resources。Eclipse构建路径(classpath)设置为src/test/resources在之前搜索src/main/resources,因此您的单元测试使用测试文件。JAR(或WAR)构建说明使用中的文件src/main/resources

2020-12-03