Log4j-DailyRollingFileAppender-滚动的文件在一段时间后被删除了吗



这个答案意味着日志要保存7天。这是可配置的吗?

这篇Java牧场帖子暗示了文件永远不会被删除。

该网站也同意日志文件永远不会被删除:

如果您试图将Apache Log4J DailyRollingFileAppender用于每日日志文件,则可能需要指定应保留的最大文件数。就像滚动RollingFileAppender支持maxBackupIndex一样。但是,如果您使用DailyRollingFileAppender,当前版本的Log4j(Apache Log4j 1.2.16)没有提供任何删除旧日志文件的机制。我试图在DailyRollingFileAppender的原始版本中进行一些小的修改,以添加maxBackupIndex属性。因此,可以清理旧的日志文件,这些文件可能不需要将来使用。

我找不到权威的答案,我不想等7天看我的日志是否被删除。

请参阅这篇关于Log4J删除的文章。简而言之,似乎dailyRollingFileAppender不能。但也许您可能想考虑切换到Logback。它是由同一个人写的,可以做你想做的事。

我使用以下appender来维护30天的HTML日志:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>LogslogFile.html</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>logFile.%d{yyyy-MM-dd}.html</fileNamePattern>
<!-- keep 30 days' worth of history -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<charset>UTF-8</charset>
<layout class="ch.qos.logback.classic.html.HTMLLayout">
<pattern>%d{HH:mm:ss.SSS}%thread%level%logger%line%msg</pattern>
</layout>           
</encoder>
</appender>

手册中的相关章节在maxHistory上说明了以下内容:

可选的maxHistory属性控制要保留的存档文件的最大数量,删除旧文件。例如,如果指定每月滚动,并将maxHistory设置为6,则将保留6个月的存档文件,同时删除6个月以上的文件。请注意,随着旧的归档日志文件被删除,为归档日志文件而创建的任何文件夹都将酌情删除。

Logback还有一个Log4J属性翻译器,可用于帮助转换。以及他们手册中专门用于从Log4J切换的整整一章。

最新更新