2012-05-10 134 views
4

我有一個谷歌Web工具包(GWT) - 應用程序,我在三種不同模式:相對於應用程序路徑的Tomcat log4j日誌記錄?

  1. 部署在Tomcat
  2. 託管模式
  3. JUnit測試

我怎樣才能配置log4j.properties,使每個模式都能正確記錄?

如果我使用${catalina.base}我不能在託管模式和JUnit測試使用它,如果我只是使用相對logs/myapplication.log,它不會與Tomcat的工作,因爲那時我得到:

java.io.FileNotFoundException: log/myapplication.log (Keine Berechtigung) 

我不會如果日誌目錄可以相對於應用程序路徑指定,那麼不要在webapps/myapplication/logs中記錄日誌,但如果日誌文件只在/ var/log/tomcat7/...或其他某些中日誌文件夾。

此刻我log4j.properties包含文件記錄了以下項:

log4j.appender.file=org.apache.log4j.FileAppender 
log4j.appender.file.File=${catalina.base}/logs/myapplication.log 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%c %C %d{ABSOLUTE} %-5p %C{1}: %m%n 
log4j.appender.file.threshold=DEBUG 
log4j.appender.file.Append=false 
+1

我不確定它是否適用於所有情況,但可以嘗試登錄到stdout。 Tomcat會將其捕獲到日誌目錄中的日誌文件中。你沒有說服務器在託管模式下,但那也可以在那裏工作。我相信JUnit也會捕獲stdout。 – GreyBeardedGeek

+0

是的,我已經登錄到標準輸出,但我不喜歡所有這些例外,當我開始我的程序。 –

+1

什麼是'所有這些例外'? – GreyBeardedGeek

回答

2

1.部署在Tomcat

我登錄到$ {}的catalina.home,但你的配置看起來還不錯。 我在Windows上本地運行配置,並且在啓動服務器時未發現有關找不到此文件夾的任何錯誤。如果你想指向Windows上的某個地方,嘗試添加下列到你的論點在你的運行配置:

-Dcatalina.base="C:\somefolder\" -Dcatalina.home="C:\somefolder\"

2.託管模式

在這種模式下,你在本地運行它一個IDE。所以你不需要記錄到文件。 在這種情況下,添加一個附加目的地stdout你的log4j.properties

log4j.rootLogger=DEBUG, stdout, A 

有了這個,你會看到在你的IDE

3. JUnit測試

使用控制檯中的日誌消息一個單獨的日誌配置文件爲您的測試(這是標準做法)。這使您可以更好地控制日誌級別,而不會影響生產日誌級別。