【发布时间】:2011-08-19 04:38:09
【问题描述】:
在当前情况下,日志文件基于 10MB 的最大文件大小滚动。滚动文件的文件名例如是“SystemOut_Debug.log.1”。
问题在于这些滚动日志文件的文件名。我们想要的是文件滚动时的当前日期和时间戳。例如“SystemOut_Debug.20110505.104500.log”
我们如何才能意识到这一点?
非常感谢
【问题讨论】:
在当前情况下,日志文件基于 10MB 的最大文件大小滚动。滚动文件的文件名例如是“SystemOut_Debug.log.1”。
问题在于这些滚动日志文件的文件名。我们想要的是文件滚动时的当前日期和时间戳。例如“SystemOut_Debug.20110505.104500.log”
我们如何才能意识到这一点?
非常感谢
【问题讨论】:
改用 DailyRollingFileAppender,例如
<appender name="log" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="/srv/logs/myprogram.log" />
<param name="Append" value="true" />
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p [%t] %c: %m%n" />
</layout>
</appender>
DatePattern 可用于每小时轮换一次,例如使用
<param name="DatePattern" value="'.'hh" />
每小时有一个文件,每 24 小时覆盖一次。
【讨论】:
DailyRollingFileAppender 正是您要搜索的内容。
<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>
【讨论】: