2017-05-03 262 views
1

我在我的spring應用程序中使用log4j2作爲我的日誌記錄實用程序。我想將特定庫/包的日誌級別設置爲與根不同的內容。例如,我希望org.springframework到INFO和com.google是WARN。我發現這個在log4j2.propertiesLog4j2設置日誌級別

appender.rolling.type = RollingFile 
appender.rolling.name = RollingFile 
logger.rolling.name = com.test.app 
logger.rolling.level = ALL 
logger.rolling.appenderRef.rolling.ref = RollingFile 

rootLogger.level = info 

我不明白是什麼logger.rolling手段?我一直在log4j2文檔中找到它,但沒有解釋什麼是或什麼是ALL的含義。

如何爲特定軟件包添加日誌級別以及此滾動級別是什麼?

+0

你讀過[這](https://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender)? –

+0

@EdwinDalorzo是的,但它沒有關於'rolling.level' – Richard

回答

3
Level intLevel 
OFF 0 
FATAL 100 
ERROR 200 
WARN 300 
INFO 400 
DEBUG 500 
TRACE 600 
ALL Integer.MAX_VALUE 

https://logging.apache.org/log4j/2.x/manual/customloglevels.html

一個log4j的記錄器會記錄下其閾值的所有事件,因此,如果設置爲ALL,因爲它使用了其閾值的最大值它會記錄每一個事件。

appender.rolling.type = RollingFile 
appender.rolling.name = RollingFile 

這是定義一個名爲RollingFile新的滾動文件附加目的地。滾動文件appender是一個appender,例如,它可以增長爲固定大小,然後在刪除最舊的條目時繼續添加新條目。它們也可以是基於時間的等

logger.rolling.name = com.test.app 
logger.rolling.level = ALL 
logger.rolling.appenderRef.rolling.ref = RollingFile 

這是告訴log4j的從名爲com.test.app上述RollingFile附加器記錄器發送的任何事件。由於此記錄器的級別設置爲ALL,log4j不會過濾掉任何事件。在「logger.rolling」中的「滾動」就是記錄器的標識符。這是必要的,因爲屬性文件是非結構化的,因此您需要一種方法來區分哪些線條放在一起。使用XML配置消除了需要

rootLogger.level = info 

通過未在屬性定義的其他記錄器創建的任何事件將被過濾,只有INFO或以下將被記錄。

的文檔是在這裏:https://logging.apache.org/log4j/2.x/manual/configuration.html#Properties

要回答你的問題,它取決於記錄器是如何在應用程序中創建的。記錄器實際上是在java中創建的,並且這是他們的名字被分配的地方。屬性文件僅指示log4j如何處理每個記錄器。您需要使用類中定義的名稱將記錄器添加到屬性文件中。如果該類本身用於創建記錄器,如apache建議的那樣,那麼該名稱將始終是該類的完全限定名稱。例如:

logger.secondclass.name = com.test.AnotherClass 
logger.secondclass.level = DEBUG 
logger.secondclass.appenderRef.rolling.ref = RollingFile 

現在,任何DEBUG或低於由com.test.AnotherClass創建的事件也將被髮送到RollingFile附加目的地。

所有這一切都在這裏解釋:​​