2012-04-03 13 views
6

Utilizzo la libreria apache commons e log4j. Ho un file di configurazione xml e un file log4j.properties. Voglio specificare il mio percorso delle proprietà log4j all'interno del mio file di configurazione xml. Per caricare le mie impostazioni faccio:problema di avviso log4j - apache commons

//Loading my xml file 
this.config = new XMLConfiguration(this.xmlFileName); 

In questo momento i seguenti avvisi sono sollevate:

log4j:WARN No appenders could be found for logger (org.apache.commons.configuration.ConfigurationUtils). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 

Tuttavia non ho ancora chiamato qualsiasi oggetto log4j. Una volta che ho letto il file xml posso lavorare con successo con la mia istanza log4j. C'è un modo per rimuovere quegli avvertimenti?

risposta

1

uscite Log4J questo errore quando si crea un logger, ma non Appender (s) è (sono) definiti. In pratica questo errore si verifica quando viene creato un logger prima che inizializzi log4j.

Si dice di non aver chiamato alcun oggetto log4j. Ma nel messaggio di errore si vede che org.apache.commons.configuration.ConfigurationUtils crea un oggetto logger (vedere la riga 66).

Si poteva spegnerla prima di inizializzazione, vedere How to turn off log4j warnings?

Logger.getRootLogger().setLevel(Level.OFF); 

Non ci dovrebbe essere bisogno di riaccenderlo poiché l'inizializzazione imposta normalmente il livello di registro del logger principale.

+0

Ok, c'è un modo per disabilitare LOG all'interno di 'org.apache.commons.configuration.ConfigurationUtils' o configurare le mie proprietà log4j insid nella mia configurazione xml? – PapaSmurf

4

Verificare se il file log4j.properties è nel classpath

Questo link potrebbe essere utile: http://www.coderanch.com/t/63230/open-source/log-log-WARN-No-appenders

+0

Non voglio inserire i miei log4j.properties nel classpath, perché è posta esterna al vaso e in un'altra directory. Voglio caricarlo in fase di esecuzione, utilizzando il percorso specificato nel file di configurazione dell'applicazione. – PapaSmurf

0

si dovrebbe almeno impostare l'appender e il livello logger per il logger principale nella log4j caricata file di configurazione. Altrimenti, vedrai questo messaggio di avviso.

Esempio di impostazione del livello appender e logger per il logger principale:

#Set root logger 's level and its appender to an appender called CONSOLE which is defined below. 
log4j.rootLogger=DEBUG, CONSOLE 

#Set the behavior of the CONSOLE appender 
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern=%d [%t] %-5p %c - %m%n 
0

risolvo il mio problema con questa soluzione:

//Disable log level 
Logger.getRootLogger().setLevel(Level.OFF); 

ora posso leggere il mio file di configurazione XML senza avvisi.
Dopo il livello di log set:

Logger.getRootLogger().setLevel(Level.INFO); 
+0

Non è questa la soluzione che ho suggerito nel mio commento sotto il mio post? – ChrLipp

Problemi correlati