2012-04-16 13 views
2

嗨,夥計們。在大多數使用Spring的Java項目的,我覺得這是在服務器啓動時執行在web.xml中添加此項:在web.xml中使用org.springframework.web.util.Log4jConfigListener條目進行初始化?

<listener> 
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
</listener> 

什麼是Log4jConfigListener的目的是什麼?

在我的遺留項目中,我也可以看到這個設置。但是,當我深入代碼時,在本課中沒有發現任何特別的東西,或者本課程內部稱爲 的其他類。我相信在放置上面的代碼片段後,一定有一些好的目的,我錯過了它。

在這把日誌文件這裏的每類是入門

private static final Log log = LogFactory.getLog(PoolManagerImpl.class); 
log.debug("Number of connection pools to create = [" 
    + connection.size() + "]"); 

即使我註釋掉我的web.xml中的條目,日誌記錄工作正常。那麼它的目的是什麼?

+0

http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/web/util/Log4jConfigListener.html – Bnjmn 2012-04-16 07:00:27

+0

Bnjmn。其實我的問題是,即使沒有這個監聽器條目,我的應用程序也可以記錄日誌嗎? – 2012-04-16 07:03:33

+0

它說在web環境中自定義log4j初始化的Bootstrap偵聽器。它正在做什麼和可以做什麼自定義初始化? – 2012-04-16 07:06:41

回答

6

Log4jConfigListener在網絡應用程序啓動後立即初始化Log4j「子系統」,而不是在需要時立即「懶惰地配置」它。

在我看來,通過Log4JConfigListener顯式初始化log4j的主要優點是它允許您通過使用servlet上下文參數來配置log4j配置文件的位置;取決於應用程序的部署方式,這可能使配置可以在運行時由某種管理員用戶進行更改,而無需在展開的WAR目錄中進行挖掘。

查看javadoc的Log4jConfigListener,更重要的是Log4jWebConfigurer,因爲它確實做了真正的工作。

+0

查爾斯安東尼。你知道Log4jConfigListener在Log4j子系統中做了什麼樣的初始化嗎?任何高層次的想法? – 2012-04-16 09:45:43

+0

@MSach好吧,鏈接到的javadoc解釋了某種級別 - 但實際上,它說「從文件X配置log4j 「其中X是從web.xml中提取的,或者是默認的,它還允許你」觀察「一個配置文件,如果你這樣做,檢查變化的頻率。 – 2012-04-16 11:34:50