2016-04-15 3 views
0

log4j2ファイルのルーティングを追加して、プロセスIDを含む名前のファイルにログを記録しようとしています。これは、ルーティングと、プロセスIDの参照を注入するコードを指定して動作します。しかし、ファイルはもはや正しくアーカイブされていないように見えます。プロセスを開始するたびに、プロセスIDで新しいファイルが正しく生成されますが、Archiveディレクトリには何も置かれません。Log4J2 with Routing appenderはファイルをアーカイブしません

また、ルーティングを使用していなくても、5つのファイルをアーカイブに保存する方法を理解することはできませんでしたが、OnstartupTriggeringPolicyを持つRollingFileアペンダだけです。新しいプロセスは、前工程と同じプロセスIDを持つことが起こる場合を除き、それ自体で

<Routing name="Routing"> 
    <Routes pattern="$${process:Id}"> 
     <Route> 
      <RollingFile name="logFile" 
       fileName="${LOG_DIR}/erdaemon-${process:Id}.log" 
       filePattern="${ARCHIVE}/erdaemon.%d{yyyy-MM-dd-hh-mm}.log"> 
       <PatternLayout pattern="${PATTERN}" /> 
       <Policies> 
        <OnStartupTriggeringPolicy /> 
       </Policies> 
      </RollingFile> 

     </Route> 
    </Routes> 
</Routing> 
<Async name="async" bufferSize="1000" includeLocation="true"> 
    <AppenderRef ref="Routing" /> 
</Async> 
</Appenders> 
<Loggers> 
    <Root level="INFO"> 
     <AppenderRef ref="async"/> 
    </Root> 
    <Logger name="testlogger" level="TRACE" additivity="false"> 
     <AppenderRef ref="async"/> 
    </Logger> 

答えて

1

OnStartupTriggeringPolicyは「ロールオーバー」をトリガすることができません。そうしないと、新しいファイルが新しい名前で作成され、以前の実行からのファイルが存在しないことさえありません。

これを行うためのアクションを作成するLog4j 2のJira問題を作成することをお勧めします。

最大5つのファイルを保存する場合、バージョン2.5の削除アクションがこれを実行できますが、ロールオーバーがある場合にのみ、設定は実際には実行されません。

また、構成でルーティングアペンダーを使用することがわかります。プロセスには単一のIDしかないので、1つ以上のRollingFileAppenderを持つことは決してありません。

関連する問題