【问题标题】:Spring logging threshold not being set by logbacklogback 未设置 Spring 日志记录阈值
【发布时间】:2014-01-16 09:16:34
【问题描述】:

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

final boolean debug = logger.isDebugEnabled();

是假的

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

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

而不是像我使用的 SLF4j

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

谢谢

【问题讨论】:

    标签: java spring logging slf4j logback


    【解决方案1】:

    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>
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        commons-logging.jar 替换为jcl-over-slf4j.jarspring documentation 对此进行了详细说明。

        【讨论】:

        • 你能解释一下吗?
        猜你喜欢
        • 1970-01-01
        • 2013-11-08
        • 1970-01-01
        • 2021-03-15
        • 1970-01-01
        • 1970-01-01
        • 2015-01-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多