logback 配置不适用于 spring

logback configuration doesn't work for spring

我有以下 logback.xml file

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
    </encoder>
</appender>

<logger name="my.package">
    <level value="TRACE"/>
</logger>

<logger name="org.springframework.web">
    <level value="DEBUG"/>
</logger>

<root>
    <priority value="debug"/>
    <appender-ref ref="STDOUT"/>
</root>

当我 运行 应用程序时,在控制台中我看到这样调用的消息:

LOGGER.error("error ");

来自 类 内部 my.package
我没有看到来自 spring.

的消息

我做错了什么?

Spring使用了commons-logging,所以需要使用jcl-over-slf4j桥让spring认为是在使用jcl。

您需要从 pom 的 spring 依赖项中排除 commons-logging,并包含 jcl-over-slf4j.

更多信息:Bridging Legacy APIs

默认情况下 Spring 记录到 Apache Commons Logging。要将其切换为 logback,请排除 Commons Logging

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.1.3.RELEASE</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

并将网桥添加到 Logback

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.12</version>
    </dependency>