【问题标题】:Log4j DailyRollingFileAppender date before the filename文件名之前的 Log4j DailyRollingFileAppender 日期
【发布时间】:2017-12-09 08:46:38
【问题描述】:

有没有办法配置 DailyRollingFileAppender 将日期放在文件名之前?即 2017.07.05.log.err 而不是 log.err.2017.07.05。

这是我目前的配置

<appender name="file" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="append" value="true" />
    <param name="DatePattern" value="'.'yyyy.MM.dd" />
    <param name="file" value="./data/logs/log.err" />
    <layout class="org.apache.log4j.PatternLayout">
        <!-- The default pattern: Date Priority [Category] Message\n -->
        <param name="ConversionPattern" value="[%d{ABSOLUTE}][%-5p [%c{1}]] %m%n" />
    </layout>
</appender>

【问题讨论】:

  • 你能试试这个吗log4j.appender.rollingAppender.rollingPolicy.fileNamePattern=F:/temp/%d{yyyy-MM-dd}filename.log
  • @Manindar 他有一个 xml 配置而不是属性文件。
  • 很抱歉,但他可以用 标签尝试同样的事情。试试这个东西,我不确定,但它可能会给你一些想法。 &lt;param name="fileNamePattern" value="F:/temp/%d{yyyy-MM-‌​dd}filename.log" /&gt;

标签: java logging log4j rollingfileappender


【解决方案1】:

在配置 log4j 之前(例如使用 BasicConfigurator.configure()),设置一个名为 log4j.log.file 的属性,使用:

System.setProperty( "log4j.log.file", "your_file_name" );

如果您使用的是命令行,也可以使用-Dlog4j.log.file=your_file_name。但我猜你是构建日期运行时,所以使用setProperty()。

您的文件名可以在运行时使用

String dateString = new SimpleDateFormat("yyyy.MM.dd").format(new Date()).toString();
String filename = "./data/logs/" + File.separator + dateString + ".log.err";

并在您的 log4j xml 中指定属性,例如:

&lt;param name="file" value="${log4j.log.file}" /&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    相关资源
    最近更新 更多