Dove posizionare log4j.xml

Come possiamo specificare che log4j deve guardare quando prova a trovare il suo file di configurazione xml?

Sembra che per impostazione predefinita, log4j analizzi la radice di una cartella di class, posso dire che utilizza la funzionalità debug log4j e esegue la mia applicazione dall’IDE.

Tuttavia, non ho più alcuna cartella di class nel mio barattolo. E il file log4j.xml si trova nella radice del jar.

Ho già provato a impostare l’opzione -Dlog4j.configuration = log4j.xml ma non funziona.

Ecco la struttura globale della mia applicazione al momento:

  • com
  • lib
  • META-INF
  • log4j.xml

Trova il log4j.xml utilizzando CLASSPATH. Se log4j non trova alcun file di configurazione, invierà un errore alla console. Se non vedi alcun errore di questo tipo, è probabile che stia trovando un file di configurazione che potrebbe non essere quello che stai modificando. Esiste un’opzione della riga di comando per forzare Log4J a segnalare il percorso del file di configurazione che sta utilizzando.

Da http://wiki.apache.org/logging-log4j/Log4jConfigurationHelp

Se si esegue “-Dlog4j.debug”, log4j stamperà le informazioni sullo standard output indicando come sta tentando di configurarsi. Guardando attraverso che vi dirà dove sta cercando il file di configurazione.

Supponiamo che la configurazione di log4j sia esterna all’albero dei sorgenti. Se non riesce a trovare il tuo file di configurazione, aiutalo con:

-Dlog4j.configuration=file:///your/path/log4j.xml 

Nota il file qualificatore : /// . Non funzionerà senza.

Non ho alcun errore

Quindi log4j sta cercando la tua configurazione, altrimenti otterrai:

log4j: WARN Imansible trovare appenders per logger ().
log4j: WARN Si prega di inizializzare correttamente il sistema log4j.

Anche:

Il registro è appena stampato sulla console

Ciò significa che probabilmente dovrai definire un appender di file, come FileAppender o RollingFileAppender . La sezione “Configurazione” sull’introduzione breve ha alcuni esempi.

Puoi usare:

 DOMConfigurator.configure(log4jConfigurationFilename); 

e specifica la posizione se è diversa dalla radice!

Non preoccuparti di dove metterlo. Esegui il tuo progetto, ad esempio in eclipse, log4j genererà un’eccezione, indicandoti dove stava andando. Quindi puoi metterlo lì.

Una volta che lo fai funzionare, scoprirai anche come cambiarlo, mentre comprendi la logica.