2011-02-01 10 views
7

Ho visto un sacco di domande qui sulle diverse appendici che log4j ha, ma nessuna che sembra coprire il problema che sto avendo. Mi scuso se questo è ripetuto ovunque.Modifica del modo in cui CompositeRollingAppender rinomina i file

Sto utilizzando un CompositeRollingAppender nella nostra app poiché è necessario eseguire il rollup del file di registro in base al tempo e alle dimensioni. Questo funziona esattamente come pubblicizzato, ma si finisce con file come:

myapp.log 
myapp.log.2010-12-11 
myapp.log.2010-12-11.1 
myapp.log.2010-12-12 

E 'possibile cambiare il formato di come log4j rinomina i file? Sono sicuro che ci deve essere una proprietà elusiva da qualche parte che ho perso. Per esempio, nella situazione di cui sopra mi piacerebbe qualcosa di simile:

myapp.log 
myapp-2010-12-11.log 
myapp-2010-12-11.1.log 
myapp-2010-12-12.log 

Il punto qui è che l'estensione è ancora .log Perché si chiede? Perché gli amministratori della nostra app si sono lamentati del fatto che non possono semplicemente fare doppio clic sul file per aprirlo (lo so, lo so). Se tutti hanno un'estensione .log questo non sarebbe il caso.

Grazie in anticipo.

+0

È un kludge ma è possibile includere il letterale '.log' nel proprio pattern data. Ovviamente i file sembreranno 'myapp.log-2010-12-11.log', ma almeno potrebbero essere aperti facendo doppio clic. – biziclop

+0

Sì, potrei farlo, suppongo. Speravo che si trattasse semplicemente di una modifica di alcune proprietà che mi mancavano. Naturalmente potrei semplicemente estendere un appender di base per fare ciò di cui ho bisogno. –

risposta

0

CompositeRollingAppender non supporta la funzione che si desidera. È piuttosto limitato nel modo in cui determina (all'avvio) se è già presente un file di registro appropriato da accodare. Supporta solo virare data e numero alla fine del nome statico configurato.

Si potrebbe provare a utilizzare log4j extra CompositeTriggeringPolicy ma non conosco uno RollingPolicy che includerà sia la data che la finestra.

La scelta per gli amministratori è quello di rinunciare al limite di dimensione per i file in modo da poter utilizzare il RollingFileAppender con un TimeBasedRollingPolicy con un

<param name="FileNamePattern" value="MyApp.%d{yyyy-MM-W}.log" /> 

o dal vivo con i nomi attuali o eseguire un job cron per rinominare il file, ma tieni presente che non è possibile rinominare i file fino al giorno successivo (altrimenti si otterranno conflitti tra nomi di file).

0

Penso che si possa utilizzare

<param name="FileNamePattern" value="C:\\logs\\MyApp.%d{yyyy-MM-dd}.log" /> 
Problemi correlati