未通过回调设置春季日志记录阈值



我正在使用Spring(Core/Security/ldap等)和logback。但由于某种原因,Spring 没有收到在登录 XML 中设置的登录线程当我调试 springs 源代码时,我也可以看到这一点,我看到

final boolean debug = logger.isDebugEnabled();

是假的

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

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

而不是像我使用的 SLF4j

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

谢谢

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>

将以下依赖项添加到您的 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" />

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

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

commons-logging.jar替换为 jcl-over-slf4j.jar 。春季文档对此进行了详细解释。

最新更新