5

Log4J ExtrasTimeBasedRollingPolicyからを設定していますが、いつロールオーバーするかをポリシーに指示するものがわかりません。 APIは明示的ではないので、私はただ推論を行っています。周波数を決定するのは、の最後の要素のようです。FileNamePattern

log4jWikiからこの例を見てください:

<appender name="ROLL" class="org.apache.log4j.rolling.RollingFileAppender">
    <!-- The active file to log to -->
    <param name="file" value="/applogs/myportal/portal.log" />
    <param name="append" value="true" />
    <param name="encoding" value="UTF-8" />

    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
    <!-- The file to roll to, this is a fairly intelligent parameter, if the file
         ends in .gz, it gzips it, based on the date stamp it rolls at that time, 
         default is yyyy-MM-dd, (rolls at midnight)
    -->
        <param name="FileNamePattern" value="/applogs/myportal/portal.%d.log.gz" />
    </rollingPolicy>

    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%5p %d{ISO8601} [%t][%x] %c - %m%n" />
    </layout>
</appender>

パターンはで終わるので、ddそれが変更されたときにロールするというポリシーがあると思いますか?APIの例と同じように、パターンは変更yyyy-MM時にファイルがロールする必要があることを意味しますMMか?

ありがとう!

ポール

4

2 に答える 2

4

さて、再確認する必要がありますが、現在の日付をフォーマット文字列でフォーマットして生成された文字列が変更されるたびに、ファイルがロールされます。つまり、「yyyy-MM-dd」を使用して日付をフォーマットすると、結果は毎日変更されます。これは「dd」の場合にも発生しますが、毎月同じファイル名を取得するため、ファイルが既に存在するため、ファイルが上書きされるか、追加されるか、ローリングが失敗します(どちらが正しいかはわかりませんが、内容によって異なります)アペンダーはそうですが、この場合、おそらくgzipの方法を除いて、ログが追加されると思います)。

編集:

例:がある場合mylog.%d{dd}.log、今日(2011-03-27)の結果のログファイルには名前が付けられmylog.25.log(ログ記録時にnew Date()がフォーマットされるため)、そのファイルにメッセージが追加されます。明日、現在使用されているファイルの名前はmylog.26.log。4月25日に、ファイル名 `mylog.25.logが再び取得されるため、その日のすべてのログが、3月25日のログが既に含まれているファイルに追加されます。

于 2011-03-25T15:24:46.633 に答える
2

私はこれを機能させました。以下はlog4jのコードです。pom.xmlにlog4j-extras依存関係を追加し、以下のコードを使用するだけで済みます。以下のコードは毎分ロールされ、.zipファイルを作成します。

<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">    
    <param name="FileNamePattern" value="/opt/app/srdotcom/logs/portal.%d{yyyy-MM-dd-HH-mm}.log.zip" />
</rollingPolicy>

<layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{YYYY-MM-dd HH:mm:ss:SSS z}| %c{2}| %m%n" />
</layout>

Mavenの依存関係:

  <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>apache-log4j-extras</artifactId>
        <version>1.2.17</version>
    </dependency>
于 2017-07-06T14:23:12.630 に答える