我有一个Google Web Toolkit(GWT) - 我以三种不同模式运行的应用程序:
如何配置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
答案 0 :(得分:3)
<强> 1。部署在Tomcat上
我登录到$ {catalina.home},但您的配置仍然很好。 我在Windows上本地运行我的配置,并且在启动服务器时看不到任何错误,因为无法找到此文件夹。如果要指向Windows上的某个位置,请尝试将以下内容添加到运行配置中的参数中:
-Dcatalina.base="C:\somefolder\" -Dcatalina.home="C:\somefolder\"
<强> 2。托管模式
在此模式下,您将在IDE中本地运行它。因此您不需要记录到文件。
在这种情况下,将stdout
appender添加到log4j.properties
log4j.rootLogger=DEBUG, stdout, A
使用此功能,您将在IDE中的控制台中看到日志消息
第3。 JUnit测试
使用单独的日志配置文件进行测试(这是标准做法)。这使您可以更好地控制日志级别,而不会影响生产日志级别。