【问题标题】:log4j relative file path [duplicate]log4j相对文件路径[重复]
【发布时间】:2011-02-27 20:26:22
【问题描述】:

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

我可以在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。

【问题讨论】:

    标签: java log4j


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 在 Debian(包括 Ubuntu)上,${catalina.home} 让你无处可去,因为它指向 /usr/share/tomcat6,它没有指向 /var/log/tomcat6 的链接。不会创建您的日志文件。 ${catalina.base} 指向 /var/lib/tomcat6,它有一个名为 logs 到 /var/log/tomcat6 的链接,是要使用的链接。希望这对某人有所帮助。
    【解决方案2】:

    最好提供:
    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

    干杯!

    【讨论】:

    • 默认不是已经是当前文件夹了吗? (即,在路径前添加“./”不会有任何区别)
    【解决方案3】:

    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”。

    【讨论】:

      猜你喜欢
      • 2015-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      • 1970-01-01
      • 2011-01-23
      • 2013-01-31
      • 2016-02-10
      相关资源
      最近更新 更多