解决springboot整合logback-spring.xml后控制台不输出debug级别的日志

解决无法生成日志文件

产生原因:logback日志框架只能加载特定名称的配置文件,无法加载我们自定义的logback-spring.xml这个名字的配置文件,下面是官方文档的描述

  • Logback默认配置的步骤(官方文档的原话)
  1. Logback 尝试查找名为* logback-test.xml * 在 Classpath 中的文件。
  2. 如果未找到此类文件,则 logback 尝试查找名为* logback.groovy * 在 Classpath 中的文件。
  3. 如果找不到这样的文件,它将检查文件* logback.xml * 在 Classpath 中
  4. 如果找不到此类文件,则通过在类中查找文件* META-INF\services\ch.qos.logback.classic.spi.Configurator *,使用服务提供者加载设施(在 JDK 1.6 中引入)来解决com.qos.logback.classic.spi.Configurator接口的实现。路径。其内容应指定所需的Configurator实现的完全限定的类名。
  5. 如果以上方法均未成功,则 logback 会使用BasicConfigurator自动进行自我配置,这会将日志输出定向到控制台。

根据上述的步骤,可知容器加载不到logback-spring.xml这个名称的配置文件,所以我们必须要让框架发现我们的配置文件,主要有以下两种方法:

  1. 将名称改为logback-spring.xml或者logback.xml即可
  2. 在配置文件中指定对应名称的配置文件,例如:
logging:
  config: classpath:logback-spring.xml  #开发和部署时的配置

解决控制台不输出debug级别的日志

今天我去配置项目的拦截器的时候,想在拦截器里面打印一些debug的日志信息,发现一直无法打印出来,而日志文件能够正常的记录,我就自己去测试了一下,发现了最终的问题所在。

首先我去检查了我日志文件中对于debug级别的日志处理,我发现没有任何问题

 <!-- console -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>debug</level>
        </filter>
    </appender>

然后就去写了一个测试类去测试

@SpringBootTest
public class LoggerTest {
       Logger logger = LoggerFactory.getLogger(LoggerTest.class);
     @Test
    void logTest1(){
        logger.debug("debug info");
        logger.warn("warn info");
        logger.error("error info");
    }
}

运行结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wGGIWGUm-1644306081622)(C:\Users\zky\AppData\Roaming\Typora\typora-user-images\image-20220208153421363.png)]

发现只打印了warn级别和error级别的日志,我就去看了一下我的配置文件,我发现我去声明包的日志级别时,声明错了,我的项目应该是在com.zky下,而我写成了com.zky.community

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5G85zdpt-1644306081624)(C:\Users\zky\AppData\Roaming\Typora\typora-user-images\image-20220208153553967.png)]

修改后

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lJtOwMjH-1644306081624)(C:\Users\zky\AppData\Roaming\Typora\typora-user-images\image-20220208153603398.png)]

原因:由于我使用的是slf4j来作为日志处理,而slf4j的配置文件的包下的默认日志级别是info,低于info级别的信息都不会被打印(例如debug,trace),所以我们需要保证我们需要去debug所在类的日志级别是debug。

最终结果:成功打印!!!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HgSoXUqo-1644306081625)(C:\Users\zky\AppData\Roaming\Typora\typora-user-images\image-20220208153945055.png)]

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐