2013-01-16 146 views
3

我有4個Java/Java EE應用程序 - 兩個是基於服務器的j2ee應用程序,運行在WebSphere中。 另外兩個是獨立的Java應用程序。 我的日誌框架是使用log4j.properties的log4j。寫入相同log4j日誌文件的不同應用程序

問題1:我可以有一個相同的日誌文件來記錄所有應用程序。即使所有應用程序都在同一時間寫入,它是否會導致任何文件寫入問題?

問題2:如果所有的應用程序都可以寫入沒有任何問題,我怎樣預先附加應用程序名稱到每個日誌語句?

+0

你有這個想法嗎?也許你可以登錄到單獨的日誌文件,然後使用某種形式的日誌文件分析工具來查看記錄的數據。我不確定是否有工具合併來自多個日誌文件的數據,但值得一看。 –

+0

實際上要求是在應用程序中有單個日誌文件 – user1929905

+0

使用某種日誌聚合軟件...您的這個要求沒有太大意義... – ppeterka

回答

2

問題1:

我相信默認情況下它不起作用。

如果您使用的是SLF4J,請考慮切換到LogBack。在的logback的文件追加程序,有一個謹慎的方式,允許在不同的JVM多FileAppenders寫入同一個日誌文件(當然,所有的人都需要有穩健的模式開啓)

http://logback.qos.ch/manual/appenders.html#prudent

問題2: 您不應該通過手動記錄您的應用程序名稱來使日誌消息不同。

有很多方法可以做。最簡單的方法是:由於你有兩個不同的應用程序,你可以爲它們設置不同的日誌配置文件。只需在appender使用的日誌模式中添加相應的應用程序名稱信息即可滿足您的需求。

+1

所以我可以假設我最終會損壞文件? – user1929905

+1

我不認爲你在回答我的回答嗎?我建議的方法不會導致文件損壞。如果您在另一個答案中提到評論,我想我引用了足夠的參考資料供您決定。您*可能*(取決於JVM impl)文件已損壞,並且文件滾動很可能無法正常運行。 –

相關問題