2015-08-25 133 views
6

我想更改正在運行的Spring Boot應用程序的日誌級別。Spring Boot應用程序日誌級別

是否可以在運行時更改日誌級別?現在我在我的jar本身中有記錄器配置。

+1

檢查出這個問題的答案在這裏:HTTP://stackoverflow.com/questions/5448673/slf4j-logback-how-to-configure-loggers-in-runtime – style

回答

13

在應用程序運行時更改日誌級別是基礎記錄器實現的一部分。

您沒有指定您正在使用的記錄器實現,因此我將假定您使用的是通過spring-boot-starter-logging或spring-boot-starter-web依賴項提供的缺省logback。

註釋掉a​​pplication.properties 中的所有記錄器相關配置,例如,

#logging.path=logs 
#logging.level.org.springframework.web= INFO 
#logging.level.=INFO 

添加logback.xml與標籤 你的classpath的根目錄見http://logback.qos.ch/manual/jmxConfig.html

啓動應用程序並打開JConsole的,去的MBean標籤。 選擇包ch.qos.logback.classic.JMxConfigurator.Under默認定位setLoggerLevel操作 例如org.springframework.web,DEBUG

enter image description here

的改變將立即生效。 對於其他記錄器庫,請參閱彈簧引導用戶指南 http://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html 對log4j的 http://www.sureshpw.com/2012/04/dynamic-logging-with-log4j.html

一種不同的方法是重複有關步驟,而不JMX和使用配置守望

+0

謝謝你的詳細解釋。我使用的是logback,所以我可以按照上面列出的方法, –

+0

這個答案和http://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html幫助了很多。我可以想到的另一個選擇是自動裝配'org.springframework.boot.logging.logback.LogbackLoggingSystem'並使用'LogbackLoggingSystem.setLogLevel(String loggerName,LogLevel level)'以編程方式在運行時更改日誌記錄級別。通過這種方式,你可以在它周圍建立你自己的休息api,並根據需要控制它(只要確保你以正確的方式保護端點) – burcakulug

+0

@Prabhakar D - 接受這個答案而不是其他鏈接。 – Mubin

3

如果你想改變日誌級別已經運行的Spring Boot應用程序,你可以看看spring-cloud-config。請參閱: http://cloud.spring.io/spring-cloud-config/

春雲配置提供了一個分佈式系統外部配置的服務器和客戶端支持。通過Config Server,您可以在所有環境中管理應用程序的外部屬性。

您可以集中管理配置服務器,並在當前的應用程序屬性 - applications.properties文件(檢查bootstrap.properties)創建您的客戶端應用程序的

spring.application.name=application name 

條目使用@RefreshScope註解你將能夠刷新您的應用程序運行時並查看更新的日誌記錄級別屬性。

2

隨着Spring Boot 1.5的發佈,如果您的Boot應用程序中有執行器,您可以通過開箱即用的REST API來完成。

1.5執行器提供了一個名爲「記錄器」的端點,您可以通過它來查看配置,並通過POST進行運行時更改。

Ex。

curl -i -X POST -H 'Content-Type: application/json' -d '{"configuredLevel": "DEBUG"}' http://localhost:8080/loggers/org.springframwork