SpringBoot實用小技巧之如何動態設置日誌級別

這篇文章主要給大家介紹了關於SpringBoot實用小技巧之如何動態設置日誌級別的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用SpringBoot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

前言

有時線上問題我們用打日誌的方式來觀察錯誤或埋點參數,但由於這些日誌如果都打出來會佔用大量存儲空間而且覆蓋了一些有效信息,所以線上級別一般設置INFO,調試級別用作特殊情況下。此時如果線上想查看調試級別下的日誌,又不能更改日誌級別後重新發布該怎麼辦?

Spring Boot提供了日誌級別動態配置功能,爲我們的線上應用調試提供了很好的機制。在實際使用中需要結合Spring-Security提供的安全機制來保護Actuator 提供的各種系統級端點的安全訪問。

SpringBoot從版本 1.5.1 之後就提供了基於 spring-boot-starter-actuator 的端點 /loggers。通過該端點可以實現查看系統的 package-path 的日誌級別,以及針對特定的 package-path 配置運行中的應用的日誌級別的功能。

下面對動態調整日誌的級別進行設置。

先引入Actuator依賴

因爲是基於 Web 的項目和利用 Actuator 提供的端點來進行配置,因此需要依賴:

<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),默認是需要安全認證才能夠被訪問的。因爲裏面涉及到一些敏感的信息。需要安全認證就需要配置 Spring-Security。爲了方便首先配置不需要安全權限的。

在配置中設置 management.security.enabled=false

GET 請求訪問

我們可以發送GET 請求到 http://localhost:8080/loggers 來獲取支持的日誌等級,以及系統(ROOT)默認的日誌等和各個包路徑(com.xxx.commond等)對應的日誌級別。

訪問會返回所有的類的日誌級別信息。

配置特定包的日誌級別

通過 /loggers 端點提供的 POST 請求,修改包路徑com.xxx.commond的日誌級別爲DEBUG:

發送POST 請求到  http://localhost:8080/loggers/com.xxx.commond,其中請求 Body 的內容如下:

{
"configuredLevel": "DEBUG"
}

再用GET 訪問 http://localhost:8080/loggers/com.xxx.commond查看當前的日誌級別:

{
configuredLevel: "DEBUG",
effectiveLevel: "INFO"
}

注意:

通過 /loggers 配置的日誌級別在應用重啓時會恢復到系統的配置,如果想永久的配置日誌的級別還是需要通過logging.level.package-path 來進行配置。

第二種方法就比較簡單了,如果你有Actuator作了服務端監控,則可以直接訪問此監控服務,然後進入具體要調整日誌級別的服務進入Logging,直接進行點擊設置即可,非常方便,其實內部幫你做了跟上面一樣的請求。

這樣就可以動態的設置調試程序了,而不用重啓服務,是不是非常方便。

部分內容引用參見:https://www.jb51.net/article/159805.htm

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對神馬文庫的支持。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章