Gradle Junit 使用 SLF4j 测试日志记录



>我正在尝试使用 Gradle 4.2.1 和 JUnit 4 启用测试日志记录。

https://discuss.gradle.org/t/allow-slf4j-logging-during-junit-tests/24449

由于某种原因,我只能看到信息日志级别,而不能高于(WARN,错误)。有人设法将其设置为在单元测试期间显示所有日志级别吗?

提前谢谢。

dependencies {
    compile group: 'org.slf4j', name:'slf4j-api', version: '1.7.21'
    compile group: 'org.slf4j', name:'slf4j-simple', version: '1.7.21'
    compile group: 'ch.qos.logback', name: 'logback-classic', version:  '1.1.7'
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

test {
    testLogging {    
        showStandardStreams true
        exceptionFormat 'full'

登录测试.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
        </encoder>
    </appender>
    <logger name="io.effectus.cqrs" level="INFO" additivity="false">
        <appender-ref ref="CONSOLE" />
    </logger>
    <root level="WARN">
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

类路径上有两个 SLF4J 实现:

compile group: 'org.slf4j', name:'slf4j-simple', version: '1.7.21'
compile group: 'ch.qos.logback', name: 'logback-classic', version:  '1.1.7'

slf4j-simple 的默认值只有 INFO 及以上版本,这可以通过配置 simplelogger.properties 来更改,而您可能没有。

所以你的问题,只看到 INFO 及以上,可能是由 slf4j-simple 优先于logback-classic引起的。

您在评论中提到它在升级到 logback 1.2.3 后可以工作。 可能出于某种原因,现在这优先于 slf4j-simple,但最好确保类路径上只有一个绑定。

最新更新