Apache log4j cloudstack 日志轮换归档策略

Apache log4j cloudstack 日志轮换归档策略

我正在尝试限制 Cloudstack 管理服务器上保存的日志数量。我正在运行 log4j 1.2,最近将“ <param name="MaxBackupIndex" value="31"/>”添加到我的配置(/etc/cloudstack/management/log4j-cloud.xml)中,以便仅保留 31 个日志:

<appender name="FILE" class="org.apache.log4j.rolling.RollingFileAppender">
      <param name="Append" value="true"/>
      <param name="Threshold" value="TRACE"/>
      <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
        <param name="FileNamePattern" value="/var/log/cloudstack/management/management-server.log.%d{yyyy-MM-dd}.gz"/>
        <param name="ActiveFileName" value="/var/log/cloudstack/management/management-server.log"/>
        <param name="MaxBackupIndex" value="31"/>
      </rollingPolicy>
      <layout class="org.apache.log4j.EnhancedPatternLayout">
         <param name="ConversionPattern" value="%d{ISO8601} %-5p [%c{1.}] (%t:%x) (logid:%X{logcontextid}) %m%n"/>
      </layout>
   </appender>

但是所有日志都还在那里,我已经没有主意了。log4j 不将其存档策略应用于较旧的日志吗?我还需要更改什么吗?任何建议都将不胜感激。

答案1

首先,log4j 1.2 中没有“ rolling”包(我知道您正在使用;))。引用不存在的包中的类可能会导致“ClassNotFound 异常”,因为它寻找的类不在您指定的位置。

另外我会将 MaxBackupIndex 从 #rollingPolicy 上移并添加 MaxFileSize 参数,如下所示。

<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
      <param name="Append" value="true"/>
      <param name="Threshold" value="TRACE"/>
      <param name="MaxBackupIndex" value="31"/>
      <param name="MaxFileSize" value="x" />

编辑:

滚动包可以在 Apache Extras for log4j 中找到: https://logging.apache.org/log4j/extras/whis 是一个包含额外功能的附加 jar 文件。标准 API 没有滚动包。

相关内容