Я пытаюсь ограничить количество журналов, которые хранятся на моем сервере управления облачным стеком. Я запускаю 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 не применяет свою политику архивирования к более старым журналам? Что еще мне нужно изменить? Мы ценим любые предложения.
Для начала нетrolling
'в файле log4j 1.2 (который, как я знаю, вы используете;)). Ссылка на класс в пакете, который не существует, может привести к «исключениям 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 для log4j: https://logging.apache.org/log4j/extras/ Whis - это дополнительный jar-файл с дополнительными функциями. Стандартный API не имеет скользящего пакета.