5

(テスト目的で) 毎分ファイルをロールアウトするように TimeBasedRollingPolicy をセットアップしましたが、直面している問題は警告であり、zip または gz ファイルが作成されていません。警告は次のとおりです。

log4j:WARN クローズ後のロールオーバー アクションでの失敗

問題を把握するためにソースを添付しましたが、まだ成功していません。log4j.xml に設定がありませんか?

<appender name="errorAppender" class="org.apache.log4j.rolling.RollingFileAppender">
        <param name="File" value="C:/error.log"/>
        <param name="Append" value="true"/>
        <param name="BufferedIO" value="true"/>
        <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
            <param name="FileNamePattern" value="C:/error.%d{ddMMMyyyy HH:mm:ss}.log.gz" />
        <param name="ActiveFileName" value="C:/error.log"/>
    </rollingPolicy>

        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] %-5p %C (line:%L) - %m%n"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMax" value="error"/>
            <param name="LevelMin" value="error"/>
            <param name="AcceptOnMatch" value="true"/>
        </filter>
    </appender>

log4j-1.2.17 と apache-log4j-extras-1.1 を使用しています。誰かがこの問題を見たことがありますか、それについての手がかりを持っていますか?

4

6 に答える 6

6

log4j:WARN Failure in post-close rollover action」メッセージの問題は、Windows ベースのシステムでは「:」文字を使用してファイル名を作成できないため、指定された FileNamePattern に次のいずれも含めないことです: \, /、:、*、?、"、<、>、|

これは、ローリング ファイル アペンダを使用して正常に動作するアプリケーションの log4j.xml です。テスト目的で、毎秒新しいファイルを作成するローリングを行いました。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="consola" class="org.apache.log4j.ConsoleAppender"> 
    <param name="target" value="System.out"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
      <param name="conversionPattern" value="[%d{yyyyMMdd HH:mm:ss:mm,SSS}]%-5p [%t] [%c{1}-%M:%L] - %m%n"/>
    </layout> 
  </appender> 

  <appender name="desarr" class="org.apache.log4j.rolling.RollingFileAppender">
    <param name="Append" value="false"/>
    <rollingPolicy name="desarr" class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
        <param name="fileNamePattern" value="C:/workspace/Probador/log/backups/importacion222.log_%d{mmss_mm}"/>
        <param name="activeFileName" value="C:/workspace/Probador/log/importacion222.log"/>
    </rollingPolicy> 
   <layout class="org.apache.log4j.PatternLayout"> 
        <param name="conversionPattern" value="[%d{yyyyMMdd HH:mm:ss:mm,SSS}]%-5p [%t] [%c{1}-%M] - %m%n"/>
   </layout> 
  </appender> 

  <root> 
    <priority value ="debug" /> 
    <appender-ref ref="consola" /> 
    <appender-ref ref="desarr"/>
  </root>

</log4j:configuration>

特別な注意:

<param name="fileNamePattern" value="C:/workspace/Probador/log/backups/importacion222.log_%d{mmss_mm}"/>

ファイルを圧縮する前に、これを試してください。

于 2013-02-12T16:58:43.543 に答える
2

log4j-1.2.17 と apache-log4j-extras-1.1 を使用しています。誰かがこの問題を見て、それについての手がかりを持っていますか?

また、log4j-1.2 を使用してこの問題を確認しました。16および apache-log4j-extras-1.1. まったく同じメッセージ。

私は無駄にさまざまな微調整を試みました。唯一、rollingPolicy->FileNamePatternが観察されるように見えるのは、appender->FileパラメーターおよびrolleringPolicy->ActiveFileNameパラメーターなしで使用された場合です。しかし、まだロールオーバーが成功したことも、以前のファイルをgzzipで圧縮したこともありません。

私も同じメッセージを受け取ります:

log4j: setFile called: somepath/somefile.log, true
log4j: setFile ended
log4j:WARN Failure in post-close rollover action

とてもイライラします。

于 2012-07-19T01:10:08.773 に答える
2

私にとっての解決策は、アーカイブされたファイルのディレクトリを手動で作成することでした。

于 2013-10-24T13:34:10.477 に答える
1

org.apache.log4j.rolling.TimeBasedRollingPolicyのrollingPolicyを使用している場合、log4jがローテーションできるようになる前にディレクトリが存在している必要があります。

たとえば、次のロールオーバーは、/var/log/blah/archive/YYYY/MM ディレクトリが存在する場合にのみ機能します。夜間のcronjobで作成するとうまくいくはずです。また、前述のように、これはログ ファイルを作成するための十分な権限がない場合にも発生します。

  <appender name="infoFile"
            class="org.apache.log4j.rolling.RollingFileAppender">
    <param name="threshold"
           value="INFO"/>
    <param name="append"
           value="true"/>
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
      <param name="ActiveFileName"
             value="/var/log/blah/file.log"/>
      <!-- IMPORTANT the archive folder must already exist, or log4j cannot
      put the rotated log there, and will keep using the old one -->
      <param name="FileNamePattern"
             value="/var/log/blah/archive/%d{yyyy}/%d{MM}/file.log.%d{yyyy-MM-dd}.gz"/>
    </rollingPolicy>
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern"
             value="%5p | %-40c{2} | %-4L | %d{yyyy-MM-dd}T%d{HH:mm:ss} | %m%n"/>
    </layout>
  </appender>
于 2014-08-15T06:06:26.397 に答える
1

私も同じ問題を抱えていましたが、私の場合は「fileNamePattern」パスフォルダーが存在しなかったことが原因でした。それを修正すると、ロールオーバーファイルが作成されました。

于 2013-02-04T07:06:33.493 に答える