如何将时间戳添加到日志文件名称

时间:2012-10-31 15:38:28

标签: log4j

我想将时间戳添加到日志文件中,如下所示。

accesslogs.2012-10-31-02-39.log

我尝试使用 DailyRollingFileAppender 并且能够添加时间戳,但它会在“.log”之后附加时间戳,从而导致accesslogs.log.2012-10-31-02-39和 Maxsize属性也是DailyRollingFileAppender 中的任务 所以我可以通过其他方式将时间戳添加到日志文件中。

以下是log4j.xml的代码片段

    <appender name="roll" class="org.apache.log4j.DailyRollingFileAppender">
           <param name="DatePattern" value="'.'yyyy-MM-dd-hh-mm'.log'" />
           <param name="File" value="C:\\Users\\sharmag\\logsfile.log" />    
           <layout class="org.apache.log4j.PatternLayout"> 
              <param name="ConversionPattern" value="%d %-5p (%15F:%L) %3x - %m (%c)%n"/>
          </layout>
    </appender>

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:2)

你无法使用Log4J开箱即用。这是Log4J源代码的片段:

String datedFilename = fileName+sdf.format(now);

这就是Log4J构建文件名的方式:格式化日期对象并将其附加到文件名。

不幸的是,DailyRollingFileAppender的设计方式,你不能有效地对它进行子类化以便自定义这种行为,所以我不得不相信,不幸的是,你的问题的答案是“不”。

(除非您开发自己的FileAppender

的实现

已编辑(五个月后)......

如果您使用Log4J Extras(由Log4J社区提供),则可以执行此操作。看看TimeBasedRollingPolicy。不过,您最终会使用与DailyRollingFileAppender不同的appender。