web-dev-qa-db-ja.com

Apachelog4jクラウドスタックログローテーションアーカイブポリシー

クラウドスタック管理サーバーに保持されるログの数を制限しようとしています。 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
Tom

まず、log4j1.2には 'rolling'パッケージはありません(使用していることはわかっています;))。存在しないパッケージ内のクラスを参照すると、探しているクラスが本来あるべき場所に存在しないため、「ClassNotFoundExceptions」が発生する可能性があります。

また、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" />

編集:

ローリングパッケージは、log4jのApache Extrasにあります。 https://logging.Apache.org/log4j/extras/ whisは、追加機能を保持する追加のjarファイルです。標準APIにはローリングパッケージがありません。

1
Maciej Cygan