【问题标题】:Unable to append the date to the file name using log4j DailyRollingFileAppender无法使用 log4j DailyRollingFileAppender 将日期附加到文件名
【发布时间】:2014-11-07 13:52:49
【问题描述】:

您好,我正在尝试使用 log4j DailyRollingFileAppender 将当前日期附加到文件名,但它不起作用。我使用了如下配置。请为此提出解决方案

属性

log4j.rootLogger = DEBUG, rollingAppender
log4j.appender.rollingAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.rollingAppender.DatePattern='.'yyyy-MM-dd
log4j.appender.rollingAppender.File=F:/temp/app.log
log4j.appender.rollingAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingAppender.layout.ConversionPattern=[%p] %d %c %M - %m%n

我希望日志文件为 app2014-11-07.log,但它仍然是 app.log

【问题讨论】:

    标签: java logging log4j2 log4j


    【解决方案1】:

    如果您使用的是 log4j 1.x,我们强烈建议您使用 org.apache.log4j.rolling.RollingFileAppender1 而不是 org.apache.log4j.DailyRollingFileAppender(可能会丢失消息,Bug 43374 )。

    所以你的appender的配置可以是:

    log4j.rootLogger = DEBUG, rollingAppender
    log4j.appender.rollingAppender=org.apache.log4j.rolling.RollingFileAppender
    log4j.appender.rollingAppender.rollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
    log4j.appender.rollingAppender.rollingPolicy.fileNamePattern=F:/temp/app%d{yyyy-MM-dd}.log
    log4j.appender.rollingAppender.layout=org.apache.log4j.PatternLayout
    log4j.appender.rollingAppender.layout.ConversionPattern=[%p] %d %c %M - %m%n
    

    注意事项

    1. 在这种情况下,您需要添加相应的 jar (apache-log4j-extras-1.2.17.jar)。

    【讨论】:

    • 试过了,它在下面给出了 error.log4j:WARN 无法将属性 [rollingPolicy] 设置为值“org.apache.log4j.rolling.TimeBasedRollingPolicy”。 log4j:WARN 请为名为“rollingAppender”的 RollingFileAppender 设置滚动策略
    • 我和 V Joe 一样。
    • fyi,此答案中提到的错误案例已解决。
    【解决方案2】:

    DailyRollingFileAppender 表示归档日志文件。
    例如,今天是 2014.11.07,当你第一次运行你的应用程序时,你的日志文件名为app.log。明天,你再次运行应用程序,它的日志文件也叫app.log但是昨天的日志文件已经改变了,可能像app.log.2014.11.07

    试试这个:

    1. 将系统日期更改为 2014.11.08
    2. 运行您的应用程序,然后查看日志路径:F:/temp/

    改变这个

        log4j.appender.rollingAppender.DatePattern='.'yyyy-MM-dd
    

        log4j.appender.rollingAppender.DatePattern='.'yyyy-MM-dd-HH-mm
    

    这意味着它将每分钟生成一个新的日志文件。
    再次运行它。

    【讨论】:

    • 有没有其他方法可以让我得到当前日期的今天的文件
    【解决方案3】:

    你可以使用这个配置:

    log4j.rootLogger=INFO, stdout
    log4j.appender.stdout=org.apache.log4j.DailyRollingFileAppender
    #log4j.appender.stdout.layout=org.apache.log4j.HTMLLayout
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5p [%d](%F:%L) - %m%n
    #log4j.appender.stdout.File=/usr/tomcat7/webapps/ngp/newgen.log
    log4j.appender.stdout.File=c:/logs/DSP.log
    #log4j.appender.stdout.DatePattern='.'yyyy-MM-dd
    log4j.appender.stdout=org.apache.log4j.RollingFileAppender
    log4j.appender.stdout.MaxBackupIndex=1
    log4j.appender.stdout.append=false
    

    【讨论】:

      猜你喜欢
      • 2017-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-31
      • 1970-01-01
      • 2014-09-28
      相关资源
      最近更新 更多