動態配置Spring Boot日誌級別的全步驟

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

前言

項目使用了SpringBoot構建項目。下面對動態調整日誌的級別進行記錄。

從版本 1.5.1 之後就提供了基於 spring-boot-starter-actuator 的端點 /loggers。通過該端點可以實現查看系統的 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 請求訪問

我們可以發送GET 請求到 http://localhost:8091/loggers 來獲取支持的日誌等級,以及系統(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。 

 * 發送POST 請求到  http://localhost:8091/com.mall.goods.zhongkui,其中請求 Body 的內容如下:

{
 "configuredLevel": "INFO"
}

•GET 訪問 /loggers/com.mall.goods.zhongkui 查看當前的日誌級別:

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

•再次訪問 http://localhost:8091/ 得到:需要注意的是,通過 /loggers 配置的日誌級別在應用重啓時會恢復到系統的配置。如果想永久的配置日誌的級別還是需要通過logging.level.package-path 來進行配置。

總結

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

參考

1.Configure a Logger

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

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