5

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

这个Java Ranch Post意味着文件永远不会被删除。

该站点还同意永远不会删除日志文件:

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

来源

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

4

1 回答 1

3

请参阅这篇关于 Log4J 删除的帖子。简而言之,dailyRollingFileAppender 似乎不能。但也许您可能想看看切换到Logback。它是由同一个人编写的,可以满足您的需求。

我使用以下附加程序来维护 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>

手册中的相关部分说明了以下内容maxHistory

可选的 maxHistory 属性控制要保留的存档文件的最大数量,删除旧文件。例如,如果您指定每月翻转,并将 maxHistory 设置为 6,则将保留 6 个月的存档文件,而 6 个月之前的文件将被删除。请注意,由于旧的归档日志文件已被删除,因此为归档日志文件而创建的任何文件夹都将被适当地删除。

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

于 2012-12-13T17:19:38.770 回答