zl程序教程

您现在的位置是:首页 >  Java

当前栏目

spring 有哪些日志级别-LogBack 日志等级设置无效,原因竟然是因为这个

2023-02-18 16:47:34 时间

  Hello,大家好,我是楼下小黑哥~

  最近被公司派去北京出差,本以为是个轻松的差事,北京一周游~

  但是没想到第一天就是九点半下班, 大意了~

  好了,回到正题,今天来讲下最近调试项目的时候发现的一个 日志级别设置不生效的问题。

  问题背景

  事情是这样的,我们的项目是一个 的工程的,其中日志框架使用的是 ,配置文件如下所示:

                %date [%thread] %-5level %logger{80} - %msg%n

  为了方便查看项目执行的 SQL,这里我把日志的级别调整成 DEBUG。

  运行的项目,执行结果比较令人惊讶spring 有哪些日志级别,日志仅仅输出了 INFO 日志,并没有输出 DEBUG 日志。

  刚开始还以为 配置文件写的有问题spring 有哪些日志级别,才导致这个问题。网上找了几个例子,对比了一下,这类的配置文件并没有什么问题。

  于是进行一系列深度排查(令人头秃),最终终于找到了问题的原因。

  问题原因

  由于 的配置 debug=true,项目启动的时候,将会打印出 内部日志信息,日志如下:

  从这个日志可以看到, Root 已经设置为 DEBUG。

  那为什么项目启动之后,DEBUG 就失效了?

  不要急,接着往下看。

  当 Spring 容器启动之后,Spring 内部将会发出一些列的 ,然后这些将会被各类已经注册的 监听。

  由于这个项目是一个 的工程,里面有一个 stener将会监听 ,代码如下:

  这里面的逻辑比较简单,获取系统配置的日志级别,levels 值如下:

  可以看到这里 root 对应的值为 info,这里将会继续调用 的的方法设置日志级别,日志输出如下:

  上面这些日志级别配置来自其实来自 的配置文件 .

  总结

  最后,总结一下, 项目,如果使用单独的 配置文件, 的配置文件 . 配置的 .level.root 将会覆盖的 配置文件中的 root 的配置:

  问题看起来是那么简单,排查的过程真的是令人头秃。

本文共 545 个字数,平均阅读时长 ≈ 2分钟