2014-05-12 3 views
0

최근에 log4j2를 사용하고 있는데 문제가 발생했습니다. 롤오버가 발생하면 활성 로그 파일은 해당 로그를 유지합니다. 롤 파일이 이름에 지정한 기간 동안 만 로그를 유지하도록 로그 파일을 지울 수 있습니까?Log4J2 : 롤오버 후 이전 로그 파일 지우기

답변

0

올바르게 이해했다면 RolloverFileAppender에 대한 추가 기능을 요청할 것입니다. 이 기능을 사용하면 기간을 지정할 수 있습니다. 각 롤오버에서 RolloverFileAppender는 현재 로그 파일을 롤오버 할뿐만 아니라 이전 롤오버 된 파일을 검사하여 지정된 기간보다 오래된 롤오버 된 파일을 삭제합니다.

당신이 묻는 질문이 이것입니까? 현재 해당 기능이 없지만 여기에 뛰어난 기능 요청이 있습니다. https://issues.apache.org/jira/browse/LOG4J2-524 이 기능에 관심이있는 사용자가 더 많다는 것을 팀에서 인식 할 수 있도록이 문제에 투표하거나 의견을 추가 할 수 있습니다.


업데이트 : 위 기능이 구현되었습니다.

이후, Log4j는 모든 롤오버에서 실행되는 custom Delete action을 지원합니다.

당신의 조합에 의해 삭제되는 파일을 제어 할 수 있습니다

:

  1. 이름 (일치하는 glob 또는 regex)
  2. Age
  3. 는 ("만약 14 일 이상 삭제")
  4. 카운트
,691 ("500메가바이트에 가장 최근의 파일을 주기적으로 업데이트")
  • 크기 ("가장 최근의 3을 유지")

    삭제할 파일을보다 세부적으로 제어해야하는 사용자는 지원되는 JSR-223 스크립팅 언어를 사용하여 스크립트 조건을 지정할 수 있습니다.

    documentation을 확인하십시오. 유용한 예제가 세 가지 있습니다. 귀하의 질문에 대한

    ,이 조각은 작동 할 수 있습니다

    <DefaultRolloverStrategy> 
        <!-- 
         * only files in the log folder, no sub folders 
         * only rolled over log files (name match) 
         * only files 30 days old or older 
        --> 
        <Delete basePath="rolledoverlogs" maxDepth="1"> 
         <IfFileName glob="my-log*.log.gz" /> 
         <IfLastModified age="30d" /> 
        </Delete> 
        </DefaultRolloverStrategy> 
    

    마지막으로, 조심! 이 방법으로 삭제 된 파일을 복구 할 수있는 방법은 없습니다. :-)

  • +0

    정확하게는 아닙니다. 내가 원하는 것은 롤오버 후에 로그가 기록 된 빈 로그 파일을 갖는 것입니다. – Szarpul

    관련 문제