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

标签 java junit log4j slf4j

我用的是 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 日志级别。我想自动化这个。

最佳答案

你不需要给 JVM 一个不同的日志实现。

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

我使用 Maven,它将文件布置在目录中以简化操作。我的版本 log4j.properties 进入目录 src/main/resources。我的测试版本在 src/test/resources 中。 Eclipse 构建路径(类路径)设置为在 src/main/resources 之前搜索 src/test/resources,因此您的单元测试使用测试文件。 JAR(或 WAR)构建指令使用 src/main/resources 中的文件。

关于java - 如何在 Junit 测试期间将日志级别设置为 DEBUG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38778026/

相关文章:

java - Hibernate 选择父项,其子项列表与子项参数匹配

java - java XML序列化向节点添加属性

使用 jUnit 测试 RESTful Api 时出现 java.lang.NullPointerException

java - 如何让 JUnit 测试等待?

logging - log4j:更改在另一个库中配置的记录器的格式

java - AtomicInteger weakCompareAndSet 上的 "spurious failure"是什么意思?

java - 将现有项目导入heroku

java - Gradle 无法在 java 和 groovy 中运行测试

spring - 如何在我的 Jetty/log4j 环境中禁用速度调试和信息日志消息?

登录特定 Controller 的 grails