2013-08-08 7 views
5

Posso configurare log4j per rollover ogni ora, quindi comprimere tutti i file di registro giornalieri in un unico zip (in modo che zip contenga 24 file di registro).log4j. Rollover ogni ora, zip giornaliera

Idealmente mi piacerebbe comprimere i file solo per quei giorni che hanno una settimana e prima. Ma questa è un'altra parte della domanda.

risposta

8

Probabilmente si desidera utilizzare uno DailyRollingFileAppender. Ad esempio, per rollarli ogni ora, utilizzi un DatePattern di '.'yyyy-MM-dd-HH. Per un file log4j.properties:

log4j.appender.myAppender=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.myAppender.DatePattern='.'yyyy-MM-dd-HH 
... 

O per la configurazione programmatica:

DailyRollingFileAppender appender = new DailyRollingFileAppender(); 
appender.setDatePattern("'.'yyyy-MM-dd-HH"); 

Logger root = Logger.getRootLogger(); 
root.addAppender(appender); 

Purtroppo, utilizzando un DailyRollingFileAppender significa che non è possibile limitare la dimensione del file - questo potrebbe essere problematico se avete tonnellate di tronchi nel periodo di rotolamento dato.

Per comprimere dare un'occhiata a: compress-log4j-files

+1

bene, vuoi dire che la combinazione di DailyRollingFileAppender con TimeBasedRollingPolicy (value = "logs/appname% d {yyyy-MM-dd} .zip."), Sarà in grado di raccogliere tutti quei 24 file al giorno e imballarli in un unico archivio zip? – Alec

+0

scusa idk, devi provarlo – Khinsu