2009-11-12 10 views
52

Ho incontrato il seguente errore:Come si modifica il livello di log di un pacchetto con Log4j?

http://issues.apache.org/jira/browse/AXIS2-4363

Si afferma quanto segue:

Questo errore si verifica solo quando il livello di log per org.apache.axiom è DEBUG così una soluzione è impostare il livello di registro> DEBUG.

La mia domanda è: come faccio a farlo? Sto setacciando le mie directory per un file di proprietà o qualcosa del genere e ho cercato di vedere se c'era qualcosa che potevo impostare nel codice, ma non ho davvero idea di cosa sto facendo. Sto eseguendo un'applicazione per console sul mio desktop proprio adesso mentre cercavo di farlo funzionare.

Aggiornamento 1: ho notato che la mia directory Axis2 ha il proprio file log4j.properties nella sua radice. Questo è sicuramente ignorato o fa parte della soluzione (o parte del problema)?

Aggiornamento 2: il file log4j.properties root level non è impostato correttamente. In questo momento sembra che questo:

log4j.rootLogger=DEBUG, R 
log4j.logger.org.apache.axiom=WARN 
log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.MaxFileSize=10MB 
log4j.appender.R.MaxBackupIndex=10 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n 

ma che è evidentemente sbagliato come questo codice restituisce "livello di registrazione è nullo":

System.out.println("Log level is " + logger.getLevel()); 

Per ora sto impostando il livello di log in codice utilizzando

Logger logger = Logger.getLogger("org.apache.axiom"); 
logger.setLevel(Level.WARN); 
+0

ancora sto avendo problemi con questo - ho aggiunto un file log4j.properties alla radice della console app, ma senza aggiungere log4j.rootLogger = WARN, R o log4j.logger.org.apache.axiom = WARN sembra fare qualsiasi cosa - ottengo lo stesso errore di prima. –

risposta

52

Quale server di applicazioni stai utilizzando? Ognuno mette la sua configurazione di logging in un posto diverso, anche se oggigiorno la maggior parte usa Commons-Logging come wrapper attorno a Log4J o java.util.logging.

Utilizzo di Tomcat come esempio, this document spiega le opzioni per la configurazione della registrazione utilizzando entrambe le opzioni. In entrambi i casi è necessario trovare o creare un file di configurazione che definisca il livello di registro per ciascun pacchetto e ciascun luogo in cui il sistema di registrazione produrrà informazioni di registro (in genere console, file o db).

Nel caso di log4j questo sarebbe il file log4j.properties, e se si seguono le istruzioni nel link qui sotto il file inizierà fuori assomigliando:

log4j.rootLogger=DEBUG, R 
log4j.appender.R=org.apache.log4j.RollingFileAppender 
log4j.appender.R.File=${catalina.home}/logs/tomcat.log 
log4j.appender.R.MaxFileSize=10MB 
log4j.appender.R.MaxBackupIndex=10 
log4j.appender.R.layout=org.apache.log4j.PatternLayout 
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n 

semplice sarebbe quella di cambiare la linea :

log4j.rootLogger=DEBUG, R 

a qualcosa di simile:

log4j.rootLogger=WARN, R 

Ma se si vuole ancora il vostro o Uscita wn livello DEBUG dalle proprie classi aggiungere una riga che dice:

log4j.category.com.mypackage=DEBUG 

lettura un po 'su e Log4JCommons-Logging vi aiuterà a capire tutto questo.

+0

In questo momento sto solo cercando di eseguire codice come app per console. Vedrò se riesco a capire dove dovrebbe andare il file log4j.properties. Grazie. –

+1

+1 Buona informazione, grazie –

+3

la categoria è deprecata in log4j con logger – janwen

7

Ho incontrato lo stesso identico problema oggi, Ryan.

Nel mio src (o root) directory, i miei log4j.properties file ora ha la seguente aggiunta

# https://issues.apache.org/jira/browse/AXIS2-4363 
log4j.category.org.apache.axiom=WARN 

Grazie per il testa a testa su come fare questo, Benjamin.

3

Questo lavoro per la mia:

log4j.logger.org.hibernate.type=trace 

anche provare:

log4j.category.org.hibernate.type=trace 
0

impostare la proprietà di sistema log4j.debug = true. Quindi puoi determinare dove la tua configurazione è in esecuzione.

2

Ho appena incontrato il problema e non sono riuscito a capire cosa stesse andando storto anche dopo aver letto tutto quanto sopra e tutto quello che c'era fuori. Quello che ho fatto è stato

  1. Set livello principale logger per AVVERTIRE
  2. Imposta livello di log del pacchetto per eseguire il debug

Ogni implementazione di registrazione ha il proprio modo di impostare tramite proprietà o tramite codice (lotto di aiuto disponibile su questo)

Indipendentemente da quanto sopra, non otterrei i log nella mia console o il mio file di registro. Quello che avevo trascurato era il seguito ...


enter image description here


Tutto quello che stavo facendo con la giocoleria sopra è stato il controllo solo la produzione dei tronchi (alla radice/pacchetto/classe ecc), a sinistra della linea rossa nell'immagine sopra. Ma non stavo cambiando il modo di visualizzazione/consumo dei log dello stesso, a destra della linea rossa nell'immagine sopra. Handler (Consumption) è di solito in default su INFO, quindi le tue preziose dichiarazioni di debug non verranno soddisfatte. Il consumo/visualizzazione è controllato impostando i livelli di registro per gli handler (ConsoleHandler/FileHandler ecc.) Quindi sono andato avanti e ho impostato i livelli di registro di tutti i miei gestori per il meglio e tutto ha funzionato.

Questo punto non è stato chiarito in modo preciso in nessun luogo.

Spero che qualcuno grattarsi la testa, pensando perché le proprietà non funzionano, troverà questo bit utile.

Problemi correlati