我正在尝试限制保存在我的云端pipe理服务器上的日志数量。 我正在运行log4j 1.2,并且最近在我的configuration文件(/etc/cloudstack/management/log4j-cloud.xml)中添加了“ <param name="MaxBackupIndex" value="31"/> ”来保留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是否不将其存档策略应用于较旧的日志? 还有什么我需要改变? 任何build议,将不胜感激。
一开始,log4j 1.2(我知道你正在使用;))没有“ rolling ”包。 引用一个不存在的包中的类可能会导致“ClassNotFoundexception”,因为它所寻找的类并不存在于你应该知道的地方。
另外我会从#rollingPolicy中移动MaxBackupIndex,并像这样添加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中find滚动包: https: //logging.apache.org/log4j/extras/ whis是额外的jar文件,其中包含额外的function。 标准的API没有滚动包。