2010-11-10 25 views
8

排除一類我有一個log4j.properties文件看起來是這樣的:從Log4j追加

log4j.logger.com.foo=INFO, foo-log 
log4j.logger.com.foo.BarImpl=INFO, bar-log 

通常用於匹配我想使用的foo-log的appender com.foo封裝結構的類。但是,在該套餐中,我希望BarImpl日誌使用appender,但不使用appender foo-log appender。目前,由BarImpl寫入的任何日誌都由foo-log和bar-log處理(如預期的那樣)。我如何讓foo-log appender忽略BarImpl類?

回答

13

從log4j文檔:

對於給定的記錄器每個啓用日誌請求將被轉發到該記錄的所有附加目的地,以及層次更高的附加目的地。換句話說,appender是從記錄器層次結構中累加性地繼承的。例如,如果控制檯appender添加到根日誌記錄器,則所有啓用的日誌記錄請求將至少在控制檯上打印。如果另外還有一個文件appender被添加到記錄器中,比如說C,那麼啓用C和C子項的記錄請求將打印在文件和控制檯上。可以覆蓋此默認行爲,以便通過將可加性標誌設置爲false來使appender累積不再具有可加性。

嘗試使用以下行(或類似)的實驗:

log4j.additivity.com.foo.BarImpl =假