2010-09-29 12 views
10

Sto utilizzando log4j per la registrazione e un file di proprietà per la configurazione. Attualmente i miei file di registro sono troppo grandi (3,5 GB sono troppo grandi per un file di registro). Quindi penso Ho bisogno di usare RollingFileAppender - ma quando lo faccio il file di registro continua a crescere eccessivamente. Credo di averlo configurato in modo errato; qualcuno ha un funzionante con il esempio di configurazione di RollingFileAppender?È necessario un esempio pratico di configurazione di log4j RollingFileAppender tramite le proprietà

Per la cronaca, la mia configurazione attuale si presenta così:

log4j.appender.MAIN_LOG.File=${catalina.base}/logs/webtop.log 
log4j.appender.MAIN_LOG=org.apache.log4j.RollingFileAppender 
log4j.appender.MAIN_LOG.layout=com.mycompany.util.log.Log4JSimpleLayout 
log4j.appender.MAIN_LOG.DatePattern='.'yyyy-MM-dd 
log4j.appender.MAIN_LOG.MaxFileSize=10MB 
log4j.appender.MAIN_LOG.MaxBackupIndex=99 
log4j.appender.MAIN_LOG.append=true 
log4j.rootCategory=ALL, MAIN_LOG 

Un'alternativa a RollingFileAppender sarebbe anche una bella soluzione.

risposta

15

Credo di averlo configurato in modo errato; qualcuno ha un esempio funzionante di configurazione di RollingFileAppender?

Questo sembra funzionare bene per me @mcherm. Vedi sotto.

Sei sicuro di che stai utilizzando log4j.properties che pensi di essere? Prova a cambiare il .File in un altro percorso per vedere se l'output del registro va al nuovo file. Quale versione di log4j stai usando? Sto correndo 1.2.15.

Spero che questo aiuti.


ho creato il seguente programma di test:

package com.j256.ormlite; 
import org.apache.log4j.Logger; 
public class Foo { 
    private static Logger logger = Logger.getLogger(Foo.class); 
    public static void main(String[] args) { 
     for (int x = 0; x < 10000000; x++) { 
      logger.error("goodness this shouldn't be happening to us right here!!!!"); 
     } 
    } 
} 

Il mio file log4j.properties detiene:

log4j.appender.MAIN_LOG=org.apache.log4j.RollingFileAppender 
log4j.appender.MAIN_LOG.File=${catalina.base}/logs/webtop.log 
log4j.appender.MAIN_LOG.layout=com.j256.ormlite.Log4JSimpleLayout 
log4j.appender.MAIN_LOG.MaxFileSize=10MB 
log4j.appender.MAIN_LOG.MaxBackupIndex=5 
log4j.appender.MAIN_LOG.append=true 
log4j.rootCategory=ALL, MAIN_LOG 

Si noti che ho rimosso il DatePattern che non era valida per il mio RollingFileAppender. La mia configurazione è:

package com.j256.ormlite; 
import org.apache.log4j.spi.LoggingEvent; 
public class Log4JSimpleLayout extends org.apache.log4j.Layout { 
    @Override 
    public String format(LoggingEvent event) { 
     return "log message = " + event.getMessage().toString() + "\n"; 
    } 
    @Override 
    public boolean ignoresThrowable() { 
     return true; 
    } 
    public void activateOptions() { 
    } 
} 

Correndo con -Dcatalina.base=/tmp/ ottengo file in /tmp/logs/ che vanno fino a N ° 5 e che sono 10 MB. Se tune il MaxFileSize o il MaxBackupIndex, si regola in modo appropriato.

+0

Forse, anzi, il mio problema è più complicato di un semplice "non ho configurare nel modo giusto". Proverò a prendere questo * meraviglioso * esempio che mi hai fornito e vedere se riesco a replicare il problema e procedere da lì. – mcherm

5

Il problema potrebbe essere dovuto al fatto che si sta specificando un DatePattern. Il DatePattern deve essere utilizzato con DailyRollingFileAppender per specificare la data in cui il file di registro deve essere eseguito. Non credo che possa essere usato insieme agli attributi MaxFileSize e MaxBackupIndex. Log4j consente di trasferire file in base alla dimensione o alla data del file ma non a entrambi.

2

Quando abbiamo bisogno di registrare i file di registro su base giornaliera, dovremmo utilizzare DailyRollingFileAppender invece di RollingFileAppender. Non è necessario specificare il limite MaxFileSize, ma solo DatePattern è sufficiente per caricare i file in base alla frequenza. Ho provato la seguente configurazione nel file log4j.properties per i file di registro a rotazione ogni minuto.

log4j.appender.infoAppender = org.apache.log4j.DailyRollingFileAppender

log4j.appender.infoAppender.Soglia = INFO

log4j.appender.infoAppender.DatePattern = '.' yyyy-MM-dd HH-mm

log4j.appender.infoAppender.File = C: /logs/info.log

+1

È stato osservato che DailyRollingFileAppender presenta 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. da qui: http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/DailyRollingFileAppender.html – Somatik

0

Inizia impostando il parametro -Dlog4j.debug JVM. Questo mostra alcune linee utili di informazioni di debug che mostrano quale file di configurazione è stato trovato e sta usando, ecc. Questo dovrebbe darti qualche indizio su cosa non va.

Vedi http://logging.apache.org/log4j/1.2/manual.html

Problemi correlati