SpringBoot實用小技巧之如何動態(tài)設(shè)置日志級別
前言
有時線上問題我們用打日志的方式來觀察錯誤或埋點參數(shù),但由于這些日志如果都打出來會占用大量存儲空間而且覆蓋了一些有效信息,所以線上級別一般設(shè)置INFO,調(diào)試級別用作特殊情況下。此時如果線上想查看調(diào)試級別下的日志,又不能更改日志級別后重新發(fā)布該怎么辦?
Spring Boot提供了日志級別動態(tài)配置功能,為我們的線上應(yīng)用調(diào)試提供了很好的機(jī)制。在實際使用中需要結(jié)合Spring-Security提供的安全機(jī)制來保護(hù)Actuator 提供的各種系統(tǒng)級端點的安全訪問。
SpringBoot從版本 1.5.1 之后就提供了基于 spring-boot-starter-actuator 的端點 /loggers。通過該端點可以實現(xiàn)查看系統(tǒng)的 package-path 的日志級別,以及針對特定的 package-path 配置運行中的應(yīng)用的日志級別的功能。
下面對動態(tài)調(diào)整日志的級別進(jìn)行設(shè)置。
先引入Actuator依賴
因為是基于 Web 的項目和利用 Actuator 提供的端點來進(jìn)行配置,因此需要依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
安全配置
Actuator 提供的端點(Endpoints),默認(rèn)是需要安全認(rèn)證才能夠被訪問的。因為里面涉及到一些敏感的信息。需要安全認(rèn)證就需要配置 Spring-Security。為了方便首先配置不需要安全權(quán)限的。
在配置中設(shè)置 management.security.enabled=false
GET 請求訪問
我們可以發(fā)送GET 請求到 http://localhost:8080/loggers 來獲取支持的日志等級,以及系統(tǒng)(ROOT)默認(rèn)的日志等和各個包路徑(com.xxx.commond等)對應(yīng)的日志級別。
訪問會返回所有的類的日志級別信息。
配置特定包的日志級別
通過 /loggers 端點提供的 POST 請求,修改包路徑com.xxx.commond
的日志級別為DEBUG:
發(fā)送POST 請求到 http://localhost:8080/loggers/com.xxx.commond,其中請求 Body 的內(nèi)容如下:
{ "configuredLevel": "DEBUG" }
再用GET 訪問 http://localhost:8080/loggers/com.xxx.commond查看當(dāng)前的日志級別:
{ configuredLevel: "DEBUG", effectiveLevel: "INFO" }
注意:
通過 /loggers 配置的日志級別在應(yīng)用重啟時會恢復(fù)到系統(tǒng)的配置,如果想永久的配置日志的級別還是需要通過logging.level.package-path
來進(jìn)行配置。
第二種方法就比較簡單了,如果你有Actuator作了服務(wù)端監(jiān)控,則可以直接訪問此監(jiān)控服務(wù),然后進(jìn)入具體要調(diào)整日志級別的服務(wù)進(jìn)入Logging,直接進(jìn)行點擊設(shè)置即可,非常方便,其實內(nèi)部幫你做了跟上面一樣的請求。
這樣就可以動態(tài)的設(shè)置調(diào)試程序了,而不用重啟服務(wù),是不是非常方便。
部分內(nèi)容引用參見:http://www.dbjr.com.cn/article/159805.htm
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。
相關(guān)文章
解讀List?list=new?ArrayList()是怎么回事
這篇文章主要介紹了解讀List?list=new?ArrayList()是怎么回事,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06SpringBoot搭建go-cqhttp機(jī)器人的方法實現(xiàn)
本文主要介紹了SpringBoot搭建go-cqhttp機(jī)器人的方法實現(xiàn)2021-12-12心動嗎?正大光明的免費使用IntelliJ IDEA商業(yè)版
這篇文章主要介紹了正大光明的免費使用IntelliJ IDEA商業(yè)版,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2020-02-02SpringMVC數(shù)據(jù)頁響應(yīng)ModelAndView實現(xiàn)頁面跳轉(zhuǎn)
本文主要介紹了SpringMVC數(shù)據(jù)頁響應(yīng)ModelAndView實現(xiàn)頁面跳轉(zhuǎn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07java組件commons-fileupload實現(xiàn)文件上傳
這篇文章主要介紹了java借助commons-fileupload組件實現(xiàn)文件上傳,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10