This answer表示日志保留7天。这是可配置的吗?
此Java Ranch Pos t表示永远不会删除文件。
此站点也同意永远不会删除日志文件:
如果您尝试将Apache Log4J DailyRollingFileAppender用于日常日志文件,则可能需要指定应保留的最大文件数。就像滚动RollingFileAppender支持maxBackupIndex一样。但是,如果您使用DailyRollingFileAppender,则当前版本的Log4j(Apache log4j 1.2.16)不提供删除旧日志文件的任何机制。我试图在DailyRollingFileAppender的原始版本中进行小的修改以添加maxBackupIndex属性。因此,可以清理旧日志文件,以备将来使用时使用。
我找不到权威的答案,我不想等7天才能看到我的日志是否被删除。
答案 0 :(得分:3)
有关Log4J删除的信息,请参阅此this post。总之,似乎dailyRollingFileAppender不能。但也许你可能想看看切换到Logback。它是由同一个人写的,可以做你想要的。
我使用以下appender来维护30天的HTML日志:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>Logs\logFile.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>
手册中的relevant section在maxHistory
上声明了以下内容:
可选的maxHistory属性控制要保留的最大归档文件数,删除旧文件。例如,如果您指定每月翻转,并将maxHistory设置为6,则将保留6个月的归档文件,并删除超过6个月的文件。请注意,删除旧的归档日志文件后,将删除为日志文件归档而创建的所有文件夹。
Logback还有一个Log4J属性转换器here可用于帮助完成转换。以及entire chapter in their manual致力于从Log4J切换。