logback配置对spring来说不起作用

时间:2015-05-13 12:35:10

标签: java spring slf4j logback appender

我有以下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内的班级 我从春天看不到消息。

我错了什么?

2 个答案:

答案 0 :(得分:3)

默认情况下,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>

答案 1 :(得分:1)

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

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

更多信息:Bridging Legacy APIs