2016-06-15 15 views
1

私はlog4j2を使ってアプリケーションにログインしています。私は私のlog4.xmllog4j2でログロールオーバーの統合テストを書くには

<Policies> 
<SizeBasedTriggeringPolicy size="2000 MB" /> 
<TimeBasedTriggeringPolicy /> 
</Policies> 

の次のポリシーを使用しています。また、サーバーのシャットダウン時にログをローテーションします。

上記の条件に基づいてログローテーションの動作を確認するには、どうすれば統合テストを書くことができますか?

+0

フレームワークをテストしないでください。本当にあなたの設定をテストしたいのであれば、フレームワークのソースを見てください。https://svn.apache.org/repos/asf/logging/log4j/companions/extras/trunk/src/test/java/org /apache/log4j/rolling/SizeBasedRollingTest.java。貧弱な解決策は、2GBのデータを記録し、新しいファイルが作成されているかどうかを確認することです。 – SubOptimal

+0

テスト済みの機能をテストしたいのはなぜですか? – tommus

答えて

0

テストでは、ログをローリングさせるために大量のメッセージを出力する必要があります。 起こるのを助けるために、テストのために専用のlog4j2構成を使用してください。ポリシーのさまざまな値を定義します。サイズポリシーをかなり小さいサイズ(2000 MBよりもはるかに小さく)に減らし、同じパターンで複数のファイルを作成できるように、パターンと時間のポリシー間隔を変更します。 以下の設定例では、最大21の日常ファイルの作成を定義しています。最も低いインデックスのファイルが最新です。ファイルのローリングは、1Kのサイズに達したときに行われます。

<RollingFile name="AppLog" fileName="${logDir}/${logFile}.log" 
     filePattern="${logDir}/${logFile}-%d{dd-MM-yyyy}-%i.log"> 
       <Policies> 
      <TimeBasedTriggeringPolicy/> 
      <SizeBasedTriggeringPolicy size="1 KB"/> 
     </Policies> 
     <DefaultRolloverStrategy fileIndex="min" max="21"/> 
</RollingFile> 

私はgit here上でこの作業の例を持っています。テストクラスLogApplicationTestを探します。 ヒントが必要な場合やその他の問題がある場合は、blogをご覧ください。

関連する問題