【前言】
之前關於線上輸出日誌一直有個困惑:如何可以動態調整的日誌級別,來保證系統在正常運行時性能同時又能在出現問題時打印詳細的信息來快速定位問題;最近研究一下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、查看項目啓動時日誌級別
2、訪問系統接口,查看日誌
3、在Admin管理控制檯修改類 com.zhanghan.zhboot.controller.CheckMobileController 的日誌級別爲Info
4、再次訪問接口,查看日誌(很顯然,已經將修改爲info)
四、項目地址:
1、地址:https://github.com/dangnianchuntian/springboot
2、代碼版本:1.5.0-Release
【總結】
1、動態修改日誌級別將大大提高我們排錯的效率,儘快定位問題,減少損失;
2、接下來會爲大家共享更多關於SpringBootAdmin的特性。