1. 程式人生 > >springboot1.5.6版本執行時動態切換日誌級別

springboot1.5.6版本執行時動態切換日誌級別

springboot1.5之前的版本好像沒有這個特性需要自己實現一個actuator endpoint,1.5之後的actuator新增了endpoint支援檢視日誌檔案,檢視日誌級別和動態改變日誌級別.

預設使用的是logback作為日誌框架,需要引入:

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>

測試目的,可以把許可權問題關閉,不然訪問endpoint的時候會報401錯誤,在application.yml中配置:
management:
context-path: /admin security: enabled: false

然後啟動應用程式,在瀏覽器裡面輸入http://localhost:8080/admin/loggers就可以看到所有的loggers和相應的日誌級別資訊,也可以輸入指定的logger name檢視指定的logger資訊:

http://localhost:9090/admin/loggers/com.example.webdemo.controller

此時顯示:

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

比如我要改變com.example.webdemo.controller的日誌級別,可以傳送一個post請求:

curl -i -X POST -H 'Content-Type: application/json' -d '{"configuredLevel": "WARN"}' http://localhost:8080/loggers/com.example.webdemo.controller
再在瀏覽器裡面檢視一下http://localhost:9090/admin/loggers/com.example.webdemo.controller

此時日誌級別已經改變:

{
    "configuredLevel": "WARN",
    "effectiveLevel": "WARN"
}

這樣除錯日誌變得跟方便了,再做一個web頁面來管理這些logger配置使用起來更方便