Java 相对于应用程序路径的Tomcat log4j日志记录?
我有一个Google Web Toolkit(GWT)应用程序,我以三种不同的模式运行:Java 相对于应用程序路径的Tomcat log4j日志记录?,java,gwt,tomcat,log4j,Java,Gwt,Tomcat,Log4j,我有一个Google Web Toolkit(GWT)应用程序,我以三种不同的模式运行: 部署在Tomcat上 托管模式 Junit测试 如何配置log4j.properties,使这些模式中的每一个都能正确记录? 如果我使用${catalina.base}我不能在托管模式和Junit测试中使用它,如果我只使用相对的logs/myapplication.log,它将无法与Tomcat一起使用,因为这样我会得到: java.io.FileNotFoundException: log/myappli
${catalina.base}
我不能在托管模式和Junit测试中使用它,如果我只使用相对的logs/myapplication.log
,它将无法与Tomcat一起使用,因为这样我会得到:
java.io.FileNotFoundException: log/myapplication.log (Keine Berechtigung)
如果可以相对于应用程序路径指定日志目录,那么我不介意将日志放在webapps/myapplication/logs中,但是如果日志文件仅位于/var/log/tomcat7/,那么也可以。。。或者其他一些日志文件夹
目前,my 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。部署在Tomcat上 我登录到${catalina.home},但您的配置看起来仍然不错。 我在Windows上本地运行我的配置,在启动服务器时没有看到任何关于找不到此文件夹的错误。如果要指向Windows上的某个位置,请尝试将以下内容添加到运行配置中的参数:
-Dcatalina.base=“C:\somefolder\”-Dcatalina.home=“C:\somefolder\”
2。托管模式
在此模式下,您将在IDE中本地运行它。因此,您不需要登录到文件。
在这种情况下,向log4j.properties添加一个stdout
appender
log4j.rootLogger=DEBUG, stdout, A
这样,您将在IDE的控制台中看到日志消息
3。JUnit测试
使用单独的日志配置文件进行测试(这是标准做法)。这允许您更好地控制日志级别,而不会影响生产日志级别。我不确定它是否适用于所有情况,但您可以尝试登录到stdout。Tomcat将在其日志目录中的日志文件中捕获它。您没有说明服务器在托管模式下是什么,但这可能也适用于托管模式。我相信JUnit也会捕获stdout。是的,我已经另外登录到stdout,但我不想在启动程序时获得所有这些异常。什么是“所有这些异常”?@greybearedgeek异常,如
log4j:ERROR setFile(null,true)调用失败。java.io.FileNotFoundException:/logs/user_sessions.html(Datei order Verzeichnis nicht gefunden),位于java.io.FileOutputStream.open(本机方法),位于java.io.FileOutputStream.
。。。(每个Appender一个)您不需要找到一种方法为托管模式和junit模式设置catalina.base系统属性吗?我对GWT了解不多,但我相信这是可能的。