首頁 > 軟體

springboot動態調整紀錄檔級別的操作大全

2021-10-14 19:00:42

1.springboot使用log4j2

springboot使用的common-logging,底層相容各種紀錄檔框架如,log4j2,slf4,logback等,預設底層使用的是logback,我們可以去除logback的依賴,引入log4j2的starter,
如下:

2.指定紀錄檔組態檔和紀錄檔等級

(此設定不限於log4j2,也適用於其他紀錄檔框架)

在resources目錄下加入log4j2的xml組態檔,預設spring-boot會載入classpath下面的名為log4j2.xml,或log4j2-file.xml的紀錄檔組態檔。

也可以在spring的組態檔中指定需要載入的紀錄檔組態檔,以及動態調整各個目錄的紀錄檔等級

logging:
  config: classpath:log4j2.xml
  level:
    com.ly: debug
    org.springframework : info

該引數可以通過系統引數,或啟動引數,覆蓋jar內的設定項。

java -jar -Dlogging.config="xxx" test.jar
java -jar test.jar --logging.config="xxx"

3.通過springboot-actuator動態調整紀錄檔級別

(適用於生產環境)

spring-boot-actuator是springboot的一個監控工具,它可以以http或JMX的方式暴露一些endPoint,內建的endpoint有 health,info,beans,loggers等。
我們可以通過loggers來動態調整紀錄檔級別,無需重啟服務。

如果是想使用webEndPoint的話,專案必須包含web-starter相關的依賴,因為actuator 的httpEndPoint是以mvc的方式整合的。

3.1 在pom檔案中引入依賴

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

3.2 在組態檔中開啟loggers的endPoint端點

management:
  endpoints:
    web:
      exposure:
        include: loggers

3.3 發起http請求改變紀錄檔級別

URI預設是 /actuator+endpoint+包名

$ curl 'http://localhost:8080/actuator/loggers/com.example' -i -X POST 
    -H 'Content-Type: application/json' 
    -d '{"configuredLevel":"debug"}'

原理可以看LoggersEndPoint的實現

4.spring boot紀錄檔初始化原理

有個loggingApplicationListener的監聽器,監聽了spring的事件,讀取了spring容器中的紀錄檔設定,進行了紀錄檔的初始化。

到此這篇關於springboot動態調整紀錄檔級別的文章就介紹到這了,更多相關springboot調整紀錄檔級別內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com