2016-07-28 28 views
1

私はlog4j 2.6.2でLog4j RollingFileAppenderをテストしています。Log4j RollingFileAppender毎分

毎分ログをローテーションしたいので、log3j2.xmlはここにある例の1つと非常に似ていますhttps://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender。 これは私のlog4j2.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="warn" name="testlog4j2" packages=""> 
    <Properties> 
    <Property name="baseDir">C:/tmp/testlog4</Property> 
    </Properties> 
    <Appenders> 
    <RollingFile name="RollingFile" fileName="${baseDir}/app.log" 
      filePattern="${baseDir}/$${date:yyyy-MM}/app-%d{yyyy-MM-dd-HH-mm}.log.gz"> 
     <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" /> 
     <CronTriggeringPolicy schedule="0 0/1 * * * ?"/> 
     <DefaultRolloverStrategy> 
     <Delete basePath="${baseDir}" maxDepth="2"> 
      <IfFileName glob="*/app-*.log.gz" /> 
      <IfLastModified age="60d" /> 
     </Delete> 
     </DefaultRolloverStrategy> 
    </RollingFile> 
    </Appenders> 
    <Loggers> 
    <Root level="ALL"> 
     <AppenderRef ref="RollingFile"/> 
    </Root> 
    </Loggers> 
</Configuration> 

であり、これは私がログを毎秒の書き込みアプリです。何が起こる

package testlog4j2; 

import org.apache.logging.log4j.LogManager; 
import org.apache.logging.log4j.Logger; 

public class TestLog4j { 

    private final static Logger logger = LogManager.getLogger(TestLog4j.class); 

    public static void main(String[] args) { 
     try { 
      for (int i=1; i<=240; i++) { 
       logger.info("Hello"); 
       Thread.sleep(1*1000); 
      } 
     } catch (Exception e) { 
      //e.printStackTrace(); 
      logger.error("Excepcion general", e); 
     } 
    } 
} 

は次のとおりです。10:02015 Log4j2-Log4j2Scheduledシステムは最初の分のログをローテーション

  • たら、この

    2016年7月28日15のように連続してエラーが表示されます-1エラーファイルC:¥tmp¥testlog4¥2016-07¥app-2016-07-28-15-10.log.gzをC:¥tmp¥testlog4¥2016-07¥app-2016-07に移動できません。 -28-15-10.log.gz:java.nio.file.NoSuchFileException C:\ tmp \ testlog4 \ 2016-07 \ app-2016-07-28-15-10.log.gz - > C:\ tmp \ testlog4 \ 2016-07 \ app-2016-07-28-15-10.log.gz

  • は毎分

  • 60行のログを持っていない結果GZ用GZありません。代わりに、1行、2行、または3行のログがあります。
  • メインログC:\ TMP \ testlog4 \ app.logは私が間違ってやっている何を何のコンテンツ

を持っていませんか?

ありがとうございました

答えて

1

あなたが不具合を発見した可能性があります。 Jira issue trackerに関するバグレポートを作成して、ここで詳しく説明してください。

+0

こんにちは、 おかげで、私はこの<削除basePathを= "$ {で https://issues.apache.org/jira/browse/LOG4J2-1487 – elamas

0

これまでのところ、CronTriggeringPolicyではなくTimeBasedTriggeringPolicyで動作するようです。

私のconfが、削除は、今では動作していないこの

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="warn" name="testlog4j2" packages=""> 
    <Properties> 
    <Property name="baseDir">C:/tmp/testlog4</Property> 
    </Properties> 
    <Appenders> 
    <RollingFile name="RollingFile" fileName="${baseDir}/app.log" 
      filePattern="${baseDir}/app-%d{yyyy-MM-dd-HH-mm}.log"> 
     <PatternLayout pattern="%d %p %c{1.} [%t] %m%n" /> 
     <!-- 
     <CronTriggeringPolicy schedule="0 0 0 * * ?"/> 
     --> 
     <!-- 
     <CronTriggeringPolicy schedule="0 0/1 * * * ?"/> 
     --> 
     <TimeBasedTriggeringPolicy interval="1"/><!-- como el filePattern tiene como unidad minima el minuto, se hara cada 1 minutos --> 
     <DefaultRolloverStrategy> 
     <Delete basePath="${baseDir}" maxDepth="0"> 
      <IfFileName glob="*/app-*.log" /> 
      <IfLastModified age="2M" /> 
     </Delete> 
     </DefaultRolloverStrategy> 
    </RollingFile> 
    </Appenders> 
    <Loggers> 
    <Root level="ALL"> 
     <AppenderRef ref="RollingFile"/> 
    </Root> 
    </Loggers> 
</Configuration> 

のように今見えるが、それは私が次調査する別の話です。

敬具

+0

削除作品になりましたバグを満たし \t このような場合は、次のように入力してください。 – elamas

関連する問題