![eb57dd922297d129fde06eccad94f57a.png](https://i-blog.csdnimg.cn/blog_migrate/2aea2204296b2296400e991a0c476322.jpeg)
世界上最快的捷径,就是脚踏实地,本文已收录 架构技术专栏关注这个喜欢分享的地方。
开源项目:
- 分布式监控(Gitee GVP最有价值开源项目 ):https://gitee.com/sanjiankethree/cubic
- 摄像头视频流采集:https://gitee.com/sanjiankethree/cubic-video
一、简介
Spring Boot 版本: 2.3.4.RELEASE
不知道大家有没有过当线上出现问题的时候,需要某些DEBUG日志,但奈何当前使用时INFO。
如果想启用DEBUG就需要重新打包发版,但某些场景下重启有可能问题就不会复现了,真是脑阔疼啊。
今天我们就来说下Spring Boot 下的日志配置动态调整,让你的日志级别随心而动。
Spring Boot的日志
![a3b3b220b34b17b3393478e3ed5e0e07.png](https://i-blog.csdnimg.cn/blog_migrate/a12def201132e423efe4ca90161c2aec.jpeg)
在Spring Boot 内部使用的其实是Commons Logging, 而基于Spring Boot的配置加载机制为我们提供了Java Util Logging、Log4j2、Logback几种日志方式。
Logback是其默认的日志框架,如果没有特殊的必要真不建议更换了。(不要说性能了)
日志格式
不要小瞧格式这种东西,在实际应用的时候是贼拉重要的一件事。
不知道大家的公司有没有统一的日志基础组件,当然没有也大概会有统一的日志配置文件吧。
想想如果你的日志格式不统一的话,如果每个项目都有自己的风格的话,你叫你的运维小伙伴怎么帮你切分日志?帮你报警呢?那真是正则写到死,完全靠爱发电了。(比如我们使用的Loghub 不统一要被运维打死的)
来看下我们的日志格式配置,这里只放PATTERN
-|%d{yyyy-MM-dd HH:mm:ss.SSS}|%-5level|%X{tid}|%thread|%logger{36}.%M:%L-%msg%n
先解释下各个位置:
%d{yyyy-MM-dd HH:mm:ss.SSS}
:时间%-5level
: 日志级别%X{tid}
: 我们自定义的分布式追踪ID%thread
: 线程%logger{36}.%M:%L
:class的全名(36代表最长字符).信息 行号%msg%n
: 输出信息 换行
这里不知道大家能否理解前面有一个 -|
是为了什么? 其实是为了在正则切分的时候方便区分换行的日志,如异常堆栈的信息。
几个知识点
再说几个其他Spring Boot使用的小点,我们就来进入正题
- 在这里Logback 没有FATAL 级别,被归到ERROR里面了
- 可以在
application.properties
里面配置debug=true
来开启debug模式,你也可以配置trace=true
开启 trace模式 - 可以再
application.properties
里使用logging.level.<logger-name>=<level>
这种格式来配置各种日志级别,比如org.hibernate
级别被设置为ERRORlogging.level.org.hibernate=error
- 日志组的概念,如果这么一个个配置烦死了,可以设定一个组给它整体配置。如: