2016-09-07 82 views
0

我正在使用log4j和我的春天MCV應用程序,我需要每天拆分日誌文件,但需要保留舊文件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的手段。你在什麼操作系統上?也許你可以編寫一個批處理腳本,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>