Tomcat 6 e la registrazione applicazione log4j producono alcun output
Domanda
Sto cercando di ottenere l'applicazione log4j (webapp) la registrazione di lavoro in un Tomcat 6 app. Ho log4j-1.2.15.jar nella mia directory WEB-INF, log4j.dtd e log4j.xml in WEB-INF / classes.
Il mio log4j.xml appare come:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
<appender name="massAppender" class="org.apache.log4j.RollingFileAppender">
<param name="maxFileSize" value="100KB" />
<param name="maxBackupIndex" value="2" />
<param name="File" value="${catalina.home}/logs/mass.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %5p %c{1}: %m%n " />
</layout>
</appender>
<category name="com.company.mass">
<priority value="DEBUG"/>
<appender-ref ref="massAppender"/>
</category>
<root>
<appender-ref ref="massAppender" />
</root>
</log4j:configuration>
Il mio servlet è nel pacchetto:
package com.company.mass;
dove il registratore è dichiarato come:
private static Logger logger = Logger.getLogger(Handler.class);
e nella parte superiore del mio metodo doGet (...) c'è:
logger.error("foo");
Quando schiero l'applicazione in Tomcat e vado al servlet, funziona correttamente. Ho anche ottenere un file mass.log, ma nulla viene messo in esso. Essa non compare in nessun altro ceppi o, e non ci sono errori evidenti. Qualche idea di cosa sta succedendo?
Soluzione
Sei sicuro di log4j è in realtà utilizzando la tua log4j.xml
per la sua configurazione, e non un altro file nel classpath?
Attiva il -Dlog4j.debug
proprietà di sistema di avere log4j stampare le informazioni circa esattamente quale file di configurazione che sta usando.
Altri suggerimenti
Non è sicuro se avete bisogno di una priorità nella vostra logger principale. Prova questo config
<category name="com.company.mass">
<priority value="DEBUG"/>
<!-- no need to specify appender again here -->
</category>
<root>
<priority value="INFO"/>
<appender-ref ref="massAppender" />
</root>
Prova ad aggiungere la riga:
<param name="Threshold" value="ALL" />
per il vostro config massAppender
e questa linea
<priority value ="debug"/>
all'interno della vostra definizione root
Quando ho incontrato questo problema sono stato in grado di risolvere con l'aggiunta di common-logging.jar
alla mia assemblea la distribuzione.