2010-06-04 58 views
18

我想我的web应用程序登录到这个路径文件: 的webapp /日志/log4j的相对文件路径

我可以设置在log4j.properties文件的绝对路径,但生产环境的目录结构会有所不同。 有什么办法可以做到吗?

这里是我该怎么做:

log4j.appender.f=org.apache.log4j.RollingFileAppender 
log4j.appender.f.layout=org.apache.log4j.PatternLayout 
log4j.appender.f.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 
log4j.appender.f.File=log.out 
log4j.appender.f.MaxFileSize=100KB 

这是打印日志到我的eclipse目录文件名为log.log(C://蚀)。 我正在使用Tomcat 6.

+0

是啊,对不起 – Bob 2010-06-04 15:48:38

回答

34

log4j能够扩展系统属性,因此如果您的生产环境为您希望放置日志文件的目录设置属性,则可以从log4j引用它。属性文件。

例如,我们也在Tomcat上部署webapps。 Tomcat设置一个名为catalina.base的系统属性,它指向Tomcat的基本目录。一个log4j的配置看起来像这样:

log4j.appender.f.File = ${catalina.base}/logs/myapp.log 

将导致myapp.log文件被存储在日志目录下的Tomcat的安装目录。

+0

非常感谢! – Bob 2010-06-04 15:48:07

+5

在Debian(包括Ubuntu)上,$ {catalina.home}无处可去,因为它指向/ usr/share/tomcat6,它没有链接到/ var/log/tomcat6。您的日志文件将不会被创建。 $ {catalina.base}指向/ var/lib/tomcat6,它有一个名为logs的链接到/ var/log/tomcat6并且是要使用的链接。希望这可以帮助某人。 – 2013-08-05 18:06:08

2

log4j.appender.A1 = org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File = $ {的catalina.home} /logs/myapp.log
log4j.appender.A1.DatePattern =” -yyyy-MM-dd'.log'

在本例中,您当前的日志文件将被命名为“myapp.log”。在午夜(或第一天的日志条目在第二天发生时),“myapp.log”将重命名为“myapp-yyyy-mm-dd.log”(例如,
“myapp-2010-12-21.log “)和一个新的”myapp.log“将被创建。

10

其所能为:
log4j.appender.f.File = ./myapp.log

。代表当前文件夹(通常是项目根文件夹)。这也适用于不同的操作系统。如果您使用$ {catalina.home},您可能不会通过tomcat运行Web应用程序。

这篇文章帮我办理这个问题:
http://www.matjazcerkvenik.si/Site/Java::Log4j_Properties.html(更新链接http://www.matjazcerkvenik.si/developer/java-log4j.php

干杯!

+2

默认情况下它不是已经是当前文件夹吗? (即,将“/”前置到路径上将没有区别) – golimar 2015-03-24 17:34:01