Spring log阈值不是由logback设置的

时间:2013-12-29 08:25:00

标签: java spring logging slf4j logback

我正在使用Spring(Core / Security / ldap等)和logback。 但由于某种原因,spring没有收到logback XML中设置的loggin阈值 我可以看到,当我调试spring源代码时,我看到了

final boolean debug = logger.isDebugEnabled();

是假的

我想提一下(我不知道它是否有任何相关性)春天使用的记录器是:

org.apache.commons.logging.LogFactory
org.apache.commons.logging.Log

而不是SLF4j,就像我使用

一样

那么我应该如何启用调试级别并将日志带入我的SLF4J配置..

由于

3 个答案:

答案 0 :(得分:8)

Spring默认使用Apache的Jakarta Commons Logging库。您需要禁用它,而是使用slf4j桥。你应该有以下(等等)

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
    <exclusions>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- Logging -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>${logback.version}</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>${logback.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${slf4j.version}</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j.version}</version>
</dependency>

然后您的logback.xml或其他配置可以设置日志级别。例如,

<logger name="org.springframework" level="info" additivity="false">
    <appender-ref ref="STDOUT" />
</logger>

答案 1 :(得分:4)

将以下依赖项添加到pom.xml文件中:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.6.6</version>
    </dependency>

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

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.0.7</version>
    </dependency>

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.0.7</version>
    </dependency>

并在logback.xml文件中添加以下行:

<logger name="org.springframework.web.client.RestTemplate"
    level="DEBUG" />
<logger name="org.springframework.web.servlet" level="OFF" />
<logger name="org.springframework.beans" level="OFF" />
<logger name="org.springframework.core" level="OFF" />
<logger name="org.springframework.context" level="OFF" />
<logger name="org.springframework.ui" level="OFF" />
<logger name="org.springframework.web.context" level="OFF" />
<logger name="org.springframework.aop" level="OFF" />
<logger name="org.springframework.cache" level="OFF" />
<logger name="org.springframework.jndi" level="OFF" />

您可以根据您的要求设置级别,或者如果您想关闭弹簧的所有日志级别,则只需添加一行:

<logger name="org.springframework" level="OFF" />

答案 2 :(得分:1)

commons-logging.jar替换为jcl-over-slf4j.jarspring documentation详细解释了这一点。