log4j的。唯一的日志文件名

时间:2012-12-22 19:26:35

标签: java log4j

如何使用log4j创建唯一命名的日志文件?当我使用Logback时,我可以这样做:

 <!-- current time formatted as "yyyyMMdd'T'HHmmss".  This value will be available to all 
    subsequent configuration elements. -->
<timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss" />

和logger appender内部定义文件名模式:

<file>${bySecond}.log</file>

2 个答案:

答案 0 :(得分:0)

我相信在开箱即用的log4j 1.7中不支持此功能。但您可以通过更改setFile参数来扩展RollingFileAppenderfileName方法,以支持基于时间的功能。

答案 1 :(得分:0)

DailyRollingFileAppender将当前日期追加到下一个文件,因此您将获得一个唯一的名称,该名称以每个文件的日志日期结束。 引用JavaDoc:

  

例如,如果File选项设置为/foo/bar.log并且   DatePattern设置为'。'yyyy-MM-dd,在2001-02-16午夜,   日志文件/foo/bar.log将被复制到/foo/bar.log.2001-02-16   2001-02-17的日志记录将在/foo/bar.log中继续,直到它为止   第二天翻身。

this之类的内容添加到您的属性XML文件中:

<appender name="roll" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="application.log" />
    <param name="DatePattern" value=".yyyy-MM-dd" />
    <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" 
          value="%d{yyyy-MMM-dd HH:mm:ss,SSS} [%t] %c %x%n  %-5p %m%n"/>
    </layout>
  </appender>