2012-12-07 217 views
4

如何在多模塊Maven項目中實現log4j?我是否將「log4j.properties」文件添加到每個子模塊的src/main/resources目錄中?如果是這樣,我必須爲每個文件appender指定一個不同的輸出文件嗎?或者有沒有辦法讓整個項目有一個總體log4j.properties文件,而沒有配置惡夢。哪種方法(許多log4j.properties文件與一個)比較常見且更好的實踐?感謝所有的反饋提前。多模塊Maven項目中的log4j

+0

問題是你喜歡做什麼?您可以創建一個單獨的maven模塊,其中包含src/main/resources中的log4j.properties,這些資源將用於其他生產環境。或者我們在談論單元測試? – khmarbaise

回答

3

這取決於你打算如何部署和運行這個項目。對於分層多模塊項目,我們通常在模塊中包含一個log4j配置文件,並使用main方法啓動該程序。

例如,考慮項目clientserver的簡化設置,這兩個項目都依賴於framework用於常見類(RMI接口,域對象等)。客戶端作爲桌面應用程序運行,擁有自己的main入口點,因此在src/main/resources下獲得自己的log4j.properties文件。服務器模塊也是如此。但是,框架不是獲取屬性文件 - 其記錄器調用將由其調用模塊配置的任何記錄器處理。

+0

對不起,我應該提到這一點 - 我正在用碼頭運行該項目。如何用jetty配置log4j?我也希望能夠在沒有碼頭的情況下運行單元測試,並且仍然擁有日誌。或者用Tomcat運行這個項目,然後保存它的日誌。這顯然是一個web應用程序。 – ktm5124

+1

更高版本的log4j應該會檢測類路徑中的配置文件,如果將其放入src/main/resources文件夾中,將會發現該配置文件。 Jetty不需要不同的配置。我通常更喜歡沒有登錄我的JUnit測試 - 您可以通過在src/test/resources中放置不同的屬性文件來覆蓋默認配置並使用特定於測試的配置。 –