2015-06-17 14 views
12

Sto lavorando sulla migrazione di un progetto Java di utilizzare log4j 1.2 per la registrazione ad usare log4j 2.Nella migrazione da log4j 1.2 a log4j 2, cosa fare con la classe DailyRollingFileAppender?

log4j 1.x ha una classe org.apache.log4j.DailyRollingFileAppender che è menzionato nel file di configurazione log4j.properties del mio progetto. Una classe con lo stesso nome DailyRollingFileAppender non esiste in log4j 2. Mi chiedo se il ruolo DailyRollingFileAppender s' può essere sostituito da qualche altra classe (es) o qualche configurazione sostituzione o implementazione in log4j 2.

La guida sottolinea che la migrazione l'applicazione non deve accedere a metodi e classi interni a log4j 1.x come ad esempio Appender s per poter essere migrato a log4j 2. Ma per fare la migrazione, cosa può essere fatto a DailyRollingFileAppender? È possibile sostituirlo con qualche configurazione personalizzata o combinazione di classi in log4j 2? Ci sono some configuration examples in the migration guide, in particolare, uno con FileAppender, ma che dire di DailyRollingFileAppender? E 'qualcosa di abbastanza vicino alla base FileAppender:

Da log4j 1.2 API Javadoc, classe org.apache.log4j.DailyRollingFileAppender

DailyRollingFileAppender estende FileAppender in modo che il file sottostante è rotolato sopra ad una frequenza utente scelto. È stato osservato che DailyRollingFileAppender mostra problemi di sincronizzazione e perdita di dati. Il compagno extra di log4j include alternative che dovrebbero essere considerate per le nuove distribuzioni e che sono discusse nella documentazione per org.apache.log4j.rolling.RollingFileAppender.

risposta

12

Stai cercando il RollingFile appender

<RollingFile name="DAILY_LOG" fileName="log/daily.log" 
       filePattern="log/%d{ddMMyyyy}_daily.log" 
       > 
     <PatternLayout pattern="%d [%7r] %5p - %c - %m%n"/> 
     <Policies> 
     <TimeBasedTriggeringPolicy interval="1"/> 
     </Policies>        
</RollingFile> 

Il campione precedente rotola in giorno, l'intervallo essendo 1 unità che è determinata dalla più piccola unità della data di ricerca nel modello di file. In altre parole, se il modello di data era d{MMyyyy}, l'intervallo = 1 corrisponde a un periodo di rollover di 1 mese.

Nota: al momento non è supportato limitare il numero di file di registro conservati oltre una determinata data o età, ecc. È possibile limitare il numero di file di registro solo per periodo di tempo.