log4j相对文件路径

时间:2010-06-04 14:58:14

标签: java log4j

我希望我的网络应用程序使用此路径登录文件: web应用/日志/

我可以在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目录(c:// eclipse)中将日志打印到名为log.log的文件中。 我正在使用Tomcat 6。

3 个答案:

答案 0 :(得分:36)

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

例如,我们也在Tomcat上部署webapps。 Tomcat设置一个名为catalina.base的系统属性,该属性指向Tomcat基目录。 log4j配置如下所示:

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

将导致myapp.log文件存储在Tomcat安装目录下的logs目录中。

答案 1 :(得分:13)

最好提供:
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 :(得分: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“将被创建。