2016-09-07 4 views
0

내 봄 MCV 응용 프로그램과 함께 log4j를 사용하고 있으며 로그 파일을 매일 분할해야하지만 2 일 후에 파일을 보관해야하는 경우 오래된 파일을 보관해야합니다. 어떻게이 문제를 해결할 수 있습니까? 내 구성을 다음과 같이Log4j logrotation - 2 일 후에 매일 로그 파일을 분할하고

<Appenders> 
    <File name="INBOUND-ERROR" fileName="${log-path}/inbound-errors.log" append="false"> 
     <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/> 
    </File> 
    <File name="OUTBOUND-ERROR" fileName="${log-path}/outbound-errors.log" append="false"> 
     <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/> 
    </File> 
    <File name="ENCRYPTIONDECRYPTION-ERROR" fileName="${log-path}/encryptiondecryption-errors.log" append="false"> 
     <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/> 
    </File> 
    <Console name="STDOUT" target="SYSTEM_OUT"> 
     <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/> 
    </Console> 
    <File name="INBOUND-ADMIN" fileName="${log-path}/inbound-admin.log" append="false"> 
     <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/> 
    </File> 
    <File name="OUTBOUND-ADMIN" fileName="${log-path}/outbound-admin.log" append="false"> 
     <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/> 
    </File> 
    <RollingFile name="RollingFile-Inbound-Appender" 
       fileName="${log-path}/inbound.log" 
       filePattern="${archive}/inbound.log.%d{yyyy-MM-dd}.%i.log.gz"> 
     <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/> 
     <Policies> 
      <TimeBasedTriggeringPolicy/> 
      <SizeBasedTriggeringPolicy size="300 MB"/> 
     </Policies> 
     <DefaultRolloverStrategy max="300000"/> 
    </RollingFile> 
    <RollingFile name="RollingFile-Outbound-Appender" 
       fileName="${log-path}/outbound.log" 
       filePattern="${archive}/outbound.log.%d{yyyy-MM-dd}.%i.log.gz"> 
     <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/> 
     <Policies> 
      <TimeBasedTriggeringPolicy/> 
      <SizeBasedTriggeringPolicy size="300 MB"/> 
     </Policies> 
     <DefaultRolloverStrategy max="300000"/> 
    </RollingFile> 
</Appenders> 
+0

log4j 전용으로 가능한지 확실하지 않습니다. 어떤 OS를 사용하고 있습니까? 어쩌면 하루에 한 번 (또는 밤에) 한 번 실행되는 배치 스크립트, Powershell 스크립트 또는 bash 스크립트를 cron이나 windows 태스크 스케줄러를 통해 "이전"파일을 보관할 수 있습니다. – Fildor

+0

@Fildor, 나는 centos를 사용하고 있습니다. –

답변

0

anwser이 log4j2 (이 혼란 - 당신이 log4j2의 태그를 넣어하지만, 질문에 언급 log4j에) 유효합니다.

TimeBasedTriggeringPolicy간격 속성 마법을 수행해야합니다. 날짜 패턴의 가장 구체적인 시간 단위에 적용됩니다 (manual 참조). 따라서 다음과 같아야합니다.

<RollingFile name="RollingFile-Inbound-Appender" 
      fileName="${log-path}/inbound.log" 
      filePattern="${archive}/inbound.log.%d{yyyy-MM-dd}.%i.log.gz"> 
    <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/> 
    <Policies> 
     <TimeBasedTriggeringPolicy interval=2/> 
     <SizeBasedTriggeringPolicy size="300 MB"/> 
    </Policies> 
    <DefaultRolloverStrategy max="300000"/> 
</RollingFile>