Tomcat log4j相对于应用程序路径的日志记录?

时间:2012-05-10 10:42:11

标签: java gwt tomcat log4j

我有一个Google Web Toolkit(GWT) - 我以三种不同模式运行的应用程序:

  1. 部署在Tomcat上
  2. 托管模式
  3. Junit Test
  4. 如何配置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 个答案:

答案 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测试

使用单独的日志配置文件进行测试(这是标准做法)。这使您可以更好地控制日志级别,而不会影响生产日志级别。