2016-05-02 17 views
2

私はlog4j2を使ってウェブアプリケーションを持っています。ログは毎日作成する必要があります。log4j2 RollingFile AppenderはTomcatのファイル名を変更しませんか?

問題:古いファイルの内容が削除されません取得しますが、任意の新しい一日がちょうどそのファイルに追加されません。だからそれは絶え間なく成長する。 tomcat8で実行している場合、一般的に次の構成が正しいですか?

log4j2.xml:

<Configuration> 
    <Appenders> 
     <RollingFile name="TEST" fileName="d:\test-application.txt" filePattern="d:\test-application-%d{yyyy-MM-dd}.log"> 
      <Policies> 
       <TimeBasedTriggeringPolicy modulate="true"/> 
      </Policies> 
     //... 
     <RollingFile> 
    //... 
    </Appenders> 
    //... 
</Configuration> 

のMaven:

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter</artifactId> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-logging</artifactId> 
      </exclusion> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-log4j2</artifactId> 
    </dependency> 

答えて

1

あなたはこの動作を報告する最初の人ではなく、一般的な要因は、Windowsのようです。 Log4jはファイルの名前を変更しようとします。それが失敗すると、ファイルをコピーして削除してからファイルを削除しようとします。ファイルにロックがある場合、名前の変更は失敗し、コピーは成功している可能性がありますが、削除は失敗しています。しかし、このコードではFileオブジェクトのdeleteメソッドが使用されていますが、これはエラーの報告には不向きであり、Log4jは戻り値をチェックしていないため、暗黙的に失敗しています。

この動作はバグで固定しなければならないが、それは本当にあなたの問題を解決することはできません - それはちょうどあなたがそれについてお知らせします。これを修正するには、名前の変更を妨げているものを見つける必要があります。私たちはしばしば見何

0

は、同じファイルに同じlog4j2.xmlの設定とログを使用して複数のプロセスまたは複数のWebアプリケーションです。一方のプロセスは他方のプロセスがファイルを削除するのを防ぎます。

私はエディタで開いたログファイルを保管するとき、私は、この問題を持っていた、と真夜中のロールオーバーは、このために失敗していました。

+0

私は、このように 'myfileを## 3.war'との戦争ファイルから更新されたバージョンをインストールし、TOMCATS'パラレルdeployment'を使用して、新しいが起動された後、以前のバージョンをアンデプロイしていたときには、ほとんど発生します。たぶん、動的にアンデプロイされたバージョンは、それでもログファイルをロックしますか?両方のアプリケーションが同じアプリケーションに書き込みます。 – membersound

+0

並列デプロイメント時に別の設定(別のログファイル)を使用してテストできますか? –

関連する問題