Log4j DailyRollingFileAppender日期前的文件名

时间:2017-07-05 15:26:19

标签: java logging log4j rollingfileappender

有没有办法配置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>

1 个答案:

答案 0 :(得分:0)

在配置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中指定属性,如:

<param name="file" value="${log4j.log.file}" />