我有4個Java/Java EE應用程序 - 兩個是基於服務器的j2ee應用程序,運行在WebSphere中。 另外兩個是獨立的Java應用程序。 我的日誌框架是使用log4j.properties的log4j。寫入相同log4j日誌文件的不同應用程序
問題1:我可以有一個相同的日誌文件來記錄所有應用程序。即使所有應用程序都在同一時間寫入,它是否會導致任何文件寫入問題?
問題2:如果所有的應用程序都可以寫入沒有任何問題,我怎樣預先附加應用程序名稱到每個日誌語句?
我有4個Java/Java EE應用程序 - 兩個是基於服務器的j2ee應用程序,運行在WebSphere中。 另外兩個是獨立的Java應用程序。 我的日誌框架是使用log4j.properties的log4j。寫入相同log4j日誌文件的不同應用程序
問題1:我可以有一個相同的日誌文件來記錄所有應用程序。即使所有應用程序都在同一時間寫入,它是否會導致任何文件寫入問題?
問題2:如果所有的應用程序都可以寫入沒有任何問題,我怎樣預先附加應用程序名稱到每個日誌語句?
問題1:
我相信默認情況下它不起作用。
如果您使用的是SLF4J,請考慮切換到LogBack。在的logback的文件追加程序,有一個謹慎的方式,允許在不同的JVM多FileAppenders寫入同一個日誌文件(當然,所有的人都需要有穩健的模式開啓)
http://logback.qos.ch/manual/appenders.html#prudent
問題2: 您不應該通過手動記錄您的應用程序名稱來使日誌消息不同。
有很多方法可以做。最簡單的方法是:由於你有兩個不同的應用程序,你可以爲它們設置不同的日誌配置文件。只需在appender使用的日誌模式中添加相應的應用程序名稱信息即可滿足您的需求。
所以我可以假設我最終會損壞文件? – user1929905
我不認爲你在回答我的回答嗎?我建議的方法不會導致文件損壞。如果您在另一個答案中提到評論,我想我引用了足夠的參考資料供您決定。您*可能*(取決於JVM impl)文件已損壞,並且文件滾動很可能無法正常運行。 –
你有這個想法嗎?也許你可以登錄到單獨的日誌文件,然後使用某種形式的日誌文件分析工具來查看記錄的數據。我不確定是否有工具合併來自多個日誌文件的數據,但值得一看。 –
實際上要求是在應用程序中有單個日誌文件 – user1929905
使用某種日誌聚合軟件...您的這個要求沒有太大意義... – ppeterka