我正在尝试限制 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 没有滚动包。