【问题标题】:logback configuration doesn't work for springlogback 配置不适用于 spring
【发布时间】:2015-05-13 12:35:10
【问题描述】:

我有以下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 的消息。

我做错了什么?

【问题讨论】:

    标签: java spring slf4j logback appender


    【解决方案1】:

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

    【讨论】:

    • 我的 pom.xml 之间有父子关系。在哪里写排除项更好?
    【解决方案2】:

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

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

    更多信息:Bridging Legacy APIs

    【讨论】:

    • 我的 pom.xml 之间有父子关系。在哪里写排除项更好?
    猜你喜欢
    • 2016-12-28
    • 2017-05-08
    • 1970-01-01
    • 2019-05-31
    • 2016-04-25
    • 2016-11-08
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多