2013-05-20 21 views
0

我使用的播放文件記錄在多個應用程序象下面這樣:我可以使用登錄到磁盤上相同文件的多個Play Server實例嗎?

Class1.java 
private static ALogger logger = Logger.of("myAppLogger"); 
public void someMethodOfClass1() { 
logger.info("This is Class1"); 
} 

Class2.java 
private static ALogger logger = Logger.of("myAppLogger"); 
public void someMethodOfClass2() { 
logger.info("This is Class2"); 
} 

Class3.java 
Class4.java 

現在,如果我運行遊戲服務器(或服務器的一個實例,並用new play.api.Application一個實例的多個實例運行批處理腳本)在同一臺機器上,它是否有效,並建議使用多個服務器實例和一個文件記錄器?

回答

1

Play框架使用Logback日誌記錄框架。

我建議你應該看看Logback的File Appender的文檔。根據文檔,FileAppender支持默認設置爲false的謹慎模式。

在謹慎模式,FileAppender將安全寫入指定的文件, 即使在 不同的JVM運行時,在不同的主機上運行的潛在其他FileAppender實例的存在。謹慎模式的默認 值爲false。

但在同一頁面警告:

審慎的模式依賴於獨佔文件鎖定。實驗顯示, 文件鎖定的寫入事件的成本約爲三倍(x3)。在「平均」PC上寫入位於本地硬盤 上的文件時,謹慎模式關閉時,寫入單個日誌記錄事件需要大約10微秒。當啓動謹慎模式時,大約需要30微秒纔會輸出一個記錄事件。當 謹慎模式關閉時,此 轉換爲每秒100000事件的日誌記錄吞吐量,在 謹慎模式下每秒約33'000個事件。

從文檔中不清楚如果嘗試在謹慎模式關閉時從多個jvm登錄會發生什麼情況。

1

它爲每個Logger.of()調用調用slf4j LoggerFactory.getLogger(name),因此它應該是安全的。

相關問題