【前言】

之前关于线上输出日志一直有个困惑:如何可以动态调整的日志级别,来保证系统在正常运行时性能同时又能在出现问题时打印详细的信息来快速定位问题;最近研究一下Spring Boot Admin中动态日志级别调整,并集成项目中,在此与大家共享;

【动态修改日志级别】

一、生产环境日志输出的状况

1、生产环境日志输出的困惑

A.设置日志输出级别为info;

(1)优点:可以详细的打印日志,有利于排错;

(2)缺点:日志消耗系统的性能较大;只能针对整个系统整体设置日志输出较多,定位具体类或方法日志效率较低;

B.设置日志输出级别为error;

(1)优点:日志消耗系统性能较小;

(2)缺点:当遇到bug时,无法追踪到详细信息难以定位问题;

2、解决办法:

A.比较被动的妥协解决方案:项目发布时设置日志输出级别为error,当线上遇到问题时,再重启项目修改日志的输出级别为info;

(1)优点:无需改造现有项目,无需增加监控系统管理日志级别;

(2)缺点:每次都需要重启项目,项目多不利于统一管理;

B.动态配置日志级别:通过Spring Boot Admin的日志级别管理来动态调整日志级别;

(1)优点:动态更新日志级别,细粒度控制(项目,包,类)日志级别,便于快速定位问题;

(2)缺点:需要对现有系统进行改造,增加Spring Boot Admin监控系统;

二、项目集成

参考上篇博文《SpringBoot实战(十二):集成 Spring Boot Admin 监控》

三、效果展示

1、查看项目启动时日志级别




springboot log4j 修改部分代码日志级别 springboot动态修改日志级别_监控系统


2、访问系统接口,查看日志


springboot log4j 修改部分代码日志级别 springboot动态修改日志级别_重启_02


3、在Admin管理控制台修改类 com.zhanghan.zhboot.controller.CheckMobileController 的日志级别为Info


springboot log4j 修改部分代码日志级别 springboot动态修改日志级别_监控系统_03


4、再次访问接口,查看日志(很显然,已经将修改为info)


springboot log4j 修改部分代码日志级别 springboot动态修改日志级别_监控系统_04


四、项目地址:

1、地址:https://github.com/dangnianchuntian/springboot

2、代码版本:1.5.0-Release

【总结】

1、动态修改日志级别将大大提高我们排错的效率,尽快定位问题,减少损失;

2、接下来会为大家共享更多关于SpringBootAdmin的特性。