2017-01-24 28 views
1

私は一定期間より古いアプリケーションログファイルをアーカイブしようとしています。 log4j 2.5以来、私たちはログを削除/アーカイブすることができる基準を定義するためにDeleteというタグを持っていることに気付きました。これを使って試してみましたが、どういうわけかクラックできません。 30日30dの値で試してみましたが、それは私のサーバーでは動作しておらず、どちらも20秒間のポリシーPT20Sは私の開発マシンで働いていません。log4j2を使用してログファイルをアーカイブする2.5

いずれの方向も高く評価されています。

XMLは以下の通りです:

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration> 
    <Appenders> 
    <Console name="Console" target="SYSTEM_OUT"> 
     <PatternLayout pattern="%d{yyyyMMdd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
    </Console> 
    <RollingFile name="RollingFile" fileName="C://logs///test.log" filePattern="C://logs//test-%d{MM-dd-yyyy}.log.gz" ignoreExceptions="false"> 
     <PatternLayout pattern="%d{yyyyMMdd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
     <TimeBasedTriggeringPolicy /> 
     <DefaultRolloverStrategy> 
     <Delete basePath="C://logs//" maxDepth="2"> 
      <IfFileName glob="*/test-*.log.gz" /> 
      <IfLastModified age="PT20S" /> 
     </Delete> 
     </DefaultRolloverStrategy> 
    </RollingFile> 
    </Appenders> 
    <Loggers> 
    <Root level="INFO"> 
     <AppenderRef ref="Console" /> 
     <AppenderRef ref="RollingFile" /> 
    </Root> 
    </Loggers> 
</Configuration> 
+1

設定ファイルの先頭に ''を設定することでデバッグできます。 –

答えて

1

Windowsを使用している場合RollingFileアペンダのファイルとfilePatternは、単一のスラッシュを使用することができます。ダブルスラッシュで混乱する可能性があります。

設定ファイルの先頭に<Configuration status="trace">を設定してデバッグすることができます。


更新:

ロールオーバーファイルは、Cで終わる:/ logsディレクトリ(filePattern="C://logs//test-%d{MM-dd-yyyy}.log.gz")。

ただし、削除アクションは、 "log.gz"で終わるファイルのうち、サブディレクトリ(c:/ logs)のファイルのみを参照するように設定されています。 c:/ logsディレクトリ内のファイルは、glob="*/test-*.log.gz"と一致しません。

これを修正するには、glob="test-*.log.gz"を使用してください。 グレッグをregexに変更しても問題は解決したというコメントがありました。

+0

ターゲットマシンはUnixサーバーになります。私のWin Dev Machineで問題を理解しようとしています。デバッグ設定を試してみましょう。 configに他に明白に見えるものはありますか? – Vikas

+0

私は何かを見つけたかもしれません。私の答えを更新しました。 –

+0

それは本当に問題でした。グロブをログアーカイブで蹴った正規表現に変更しました。申し訳ありませんが応答の遅延。 また、私はそれを受け入れることができるように、あなたのコメントを答えとして、またglob/regexの変更で更新できますか? – Vikas

関連する問題