2013-08-27 37 views
0

我有2個Web應用程序,希望將這兩個Web應用程序的日誌消息記錄到一個日誌文件中。我試過這種情況,面臨的問題是「如果一個Web應用程序將日誌記錄到日誌中,第二個Web應用程序不能將日誌記錄到日誌文件中」。如果我停止服務器,第二個應用程序能夠登錄。任何幫助?Log 4j多個Web應用程序的常用日誌文件?

+0

可能是文件句柄的爭用! –

+0

我不會那樣做。讓兩個程序編寫同一個文件風險太大。 –

+0

同意@IgorRodriguez。使用2個單獨的文件... –

回答

0

將兩個不同應用程序的日誌記錄放到常見日誌中並不是一個好主意。記錄模塊鎖定日誌文件以進行寫入。如果其他應用程序試圖訪問相同的日誌,它不會得到鎖。 我會避免這樣的事情。

1

從多個獨立進程寫入同一個文件是一個壞主意 - 只有其中一個可以獲得文件鎖定,從您的問題中可以看出。

您需要的是集中式日誌記錄服務器,並讓所有應用程序都通過網絡登錄到該服務器。請參閱this question

+0

據我所知,只有一個進程可以得到一個_exclusive_鎖定 - 還有'O_APPEND'模式(參見[details](http://linux.about.com/od/commands/)升/ blcmdl2_open.htm))。但是這並沒有改變,混合日誌文件仍然不是一個好主意;-) – Jost

+0

@Jost - 這將大大取決於所使用的日誌框架和底層操作系統,即使它可以工作,也會得到交錯日誌行。無論如何,這將是一個混亂:-) – radai

1

您可以使用Log4J的SocketAppender,因爲它更乾淨 - 可以在本文中找到示例:log4j: How to use SocketAppender

說實話,這是有點矯枉過正相比,有兩個獨立日誌文件爲您的過程。

Btw。你的方法在分佈式文件系統(例如NFS)上可能有問題 - 不要混合日誌文件。

希望有所幫助。 * Jost

相關問題