Назад | Перейти на главную страницу

Политика архивирования логов Apache log4j 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 не применяет свою политику архивирования к более старым журналам? Что еще мне нужно изменить? Мы ценим любые предложения.

Для начала нет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 не имеет скользящего пакета.