我需要將1個批處理應用程序拆分爲3個不同的文件。代碼幾乎是一樣的,我剛剛修改了ANT構建腳本,並排除或包含了不同應用程序的一些依賴關係。比我爲每場戰爭設置了不同的web.xml。每個web.xml爲不同的行爲定義了不同的bean和不同的bean。如果戰爭不同,將相同的類記錄到不同的文件
所有的戰爭一個Tomcat服務器上運行。應用程序使用log4j,但現在我重構它來使用slf4j代替。以爲我仍然需要在slf4j下使用log4j。
我的問題是,每個應用程序日誌必須出現在不同的日誌文件, 即使類名是相同的。
- 我無法編寫不同的log4j.properties文件,因爲管理員將它放在所有應用程序的tomcat/lib文件夾中。
- 我曾嘗試初始化Servlet時放置在Tomcat的/ lib和更改配置文件名3個文件爲每個應用程序,但它改變了在同一時間的所有應用程序。
我現在唯一能想到的解決方案是將log4j-over-slf4j打包,創建3個不同的slf4j日誌工廠,爲每個日誌名添加一些前綴。舉例來說,如果我有這樣的記錄:
private final Logger logger = LoggerFactory.getLogger(MainProcessor.class);
每個日誌工廠將genarate這些登錄名(與前綴APP1,APP2和APP3):
app1.com.test.MainProcessor
app2.com.test.MainProcessor
app3.com.test.MainProcessor
有沒有什麼更好的辦法來處理這個問題?
我考慮類似的解決方案,但也有大約10將每個應用程序,和量可以根據配置改變,所以我不能使用一個唯一的類。 第二種解決方案是另一種選擇,但我不能決定它是否比我的工廠解決方案更好。這不需要建造額外的罐子,但我將不得不修改所有類別,使得記錄器變得更加困難,並且必須管理額外的單獨課程。 – arminas
您可以爲每個應用程序或單例使用一個類,因爲您可以使用調用者和應用程序的知識來獲取記錄器。另一件事 - 你有沒有考慮以編程方式設置配置?這可以使用文件或屬性實例來完成。 – alterfox