前言
項目使用了springboot構建項目。下面對動態調整日志的級別進行記錄。
從版本 1.5.1 之后就提供了基于 spring-boot-starter-actuator 的端點 /loggers。通過該端點可以實現查看系統的 package-path 的日志級別,以及針對特定的 package-path 配置運行中的應用的日志級別的功能。
actuator 依賴
pom 依賴
因為是基于 web 的項目和利用 actuator 提供的端點來進行配置,因此需要依賴:
1
2
3
4
5
6
7
8
9
|
<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。為了方便首先配置不需要安全權限的。
1
|
management.security.enabled= false |
get 請求訪問
我們可以發送get 請求到 http://localhost:8091/loggers 來獲取支持的日志等級,以及系統(root)默認的日志等和各個包路徑(com.mall.goods.zhongkui
等)對應的日志級別。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
{ 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 輸出各個級別的日志:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
@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 的內容如下:
1
2
3
|
{ "configuredlevel" : "info" } |
•get 訪問 /loggers/com.mall.goods.zhongkui 查看當前的日志級別:
1
2
3
4
|
{ configuredlevel: "info" , effectivelevel: "info" } |
•再次訪問 http://localhost:8091/ 得到:需要注意的是,通過 /loggers 配置的日志級別在應用重啟時會恢復到系統的配置。如果想永久的配置日志的級別還是需要通過logging.level.package-path
來進行配置。
總結
spring boot 提供的日志級別動態配置功能,為我們的線上應用調試提供了很好的機制。在實際使用中需要結合 spring-security 提供的安全機制來保護actuator 提供的各種系統級端點。
參考
好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。
原文鏈接:https://blog.csdn.net/u014684364/article/details/81289696