動態(tài)配置Spring Boot日志級別的全步驟
前言
項目使用了SpringBoot構建項目。下面對動態(tài)調(diào)整日志的級別進行記錄。
從版本 1.5.1 之后就提供了基于 spring-boot-starter-actuator 的端點 /loggers。通過該端點可以實現(xiàn)查看系統(tǒng)的 package-path 的日志級別,以及針對特定的 package-path 配置運行中的應用的日志級別的功能。
Actuator 依賴
pom 依賴
因為是基于 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 請求訪問
我們可以發(fā)送GET 請求到 http://localhost:8091/loggers 來獲取支持的日志等級,以及系統(tǒng)(ROOT)默認的日志等和各個包路徑(com.mall.goods.zhongkui等)對應的日志級別。
{
levels: [
"OFF",
"FATAL",
"ERROR",
"WARN",
"INFO",
"DEBUG",
"TRACE"
],
loggers: {
ROOT: {
configuredLevel: "INFO",
effectiveLevel: "INFO"
},
com.mall.goods.zhongkui: {
configuredLevel: "DEBUG",
effectiveLevel: "DEBUG"
},
com.mall.goods.zhongkui.mallcpswomai.mapper: {
configuredLevel: "DEBUG",
effectiveLevel: "DEBUG"
}
}
}
配置日志級別
編寫日志輸出類
編寫一個controller 輸出各個級別的日志:
@Slf4j
@Controller
public class TestController {
@GetMapping(value = "/testLog")
public String testLog() {
log.info("---------------------------");
log.debug("debug debug");
log.info("info info info");
log.warn("warn warn warn");
log.error("error error error ");
log.info("---------------------------");
return "ok";
}
}
查看日志級別
啟動應用訪問 http://localhost:8091/ 得到:
[2018-07-30 18:05:42.868] [http-nio-8091-exec-2] INFO com.mall.goods.zhongkui.mallcpswomai.web.OrderRelationController----------------------------
[2018-07-30 18:05:42.869] [http-nio-8091-exec-2] DEBUG com.mall.goods.zhongkui.mallcpswomai.web.OrderRelationController-debug debug
[2018-07-30 18:05:42.869] [http-nio-8091-exec-2] INFO com.mall.goods.zhongkui.mallcpswomai.web.OrderRelationController-info info info
[2018-07-30 18:05:42.869] [http-nio-8091-exec-2] WARN com.mall.goods.zhongkui.mallcpswomai.web.OrderRelationController-warn warn warn
[2018-07-30 18:05:42.869] [http-nio-8091-exec-2] ERROR com.mall.goods.zhongkui.mallcpswomai.web.OrderRelationController-error error error
[2018-07-30 18:05:42.869] [http-nio-8091-exec-2] INFO com.mall.goods.zhongkui.mallcpswomai.web.OrderRelationController----------------------------
Spring Boot 默認的 ROOT 日志級別是INFO。
配置特定包的日志級別
通過 /loggers 端點提供的 POST 請求,修改包路徑com.mall.goods.zhongkui 的日志級別為INFO。
* 發(fā)送POST 請求到 http://localhost:8091/com.mall.goods.zhongkui,其中請求 Body 的內(nèi)容如下:
{
"configuredLevel": "INFO"
}
•GET 訪問 /loggers/com.mall.goods.zhongkui 查看當前的日志級別:
{
configuredLevel: "INFO",
effectiveLevel: "INFO"
}
•再次訪問 http://localhost:8091/ 得到:需要注意的是,通過 /loggers 配置的日志級別在應用重啟時會恢復到系統(tǒng)的配置。如果想永久的配置日志的級別還是需要通過logging.level.package-path 來進行配置。
總結
Spring Boot 提供的日志級別動態(tài)配置功能,為我們的線上應用調(diào)試提供了很好的機制。在實際使用中需要結合 Spring-Security 提供的安全機制來保護Actuator 提供的各種系統(tǒng)級端點。
參考
好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。
相關文章
java 如何往已經(jīng)存在的excel表格里面追加數(shù)據(jù)的方法
這篇文章主要介紹了java 如何往已經(jīng)存在的excel表格里面追加數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-08-08
如何在SpringBoot項目中集成SpringSecurity進行權限管理
在本文中,我們將討論如何在Spring?Boot項目中集成權限管理,我們將使用Spring?Security框架,這是一個專門用于實現(xiàn)安全性功能的框架,包括認證和授權,需要的朋友可以參考下2023-07-07
SpringSceurity實現(xiàn)短信驗證碼功能的示例代碼
這篇文章主要介紹了SpringSceurity實現(xiàn)短信驗證碼功能的示例代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06

