2009-05-27 14 views
1

Ich versuche log4j Anwendung (Webapp) Protokollierung arbeitet in einem Tomcat 6 App zu bekommen. Ich habe log4j-1.2.15.jar in meinem WEB-INF-Verzeichnis, log4j.dtd und log4j.xml in WEB-INF/classes.Tomcat 6 und log4j Anwendung Protokollierung erzeugt keine Ausgabe

Mein log4j.xml wie folgt aussieht:

<?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> 

Mein Servlet in dem Paket ist:

package com.company.mass; 

wo der Logger deklariert als:

private static Logger logger = Logger.getLogger(Handler.class); 

und an der Spitze meiner doGet (...) Methode gibt es:

logger.error("foo"); 

Wenn ich die app in Tomcat implementieren und an das Servlet gehen, funktioniert es richtig. Ich bekomme sogar eine Datei namens mass.log, aber es wird nichts hineingelegt. Es wird auch nicht in anderen Protokollen angezeigt, und es gibt keine offensichtlichen Fehler. Irgendeine Idee was ist los?

+0

Haben Sie das catalina.out-Protokoll überprüft? – Gandalf

+0

Ich habe keine catalina.out. Mein cataline.2009-05-27.log hat die üblichen Startup-Sachen drin. –

Antwort

3

Sind Sie sicher, dass log4j tatsächlich mit Ihrem log4j.xml für seine Konfiguration, und nicht eine andere Datei auf dem Classpath?

Aktivieren Sie die Systemeigenschaft -Dlog4j.debug log4j haben Informationen über genau, welche Konfiguration auszudrucken Datei es verwendet.

+0

Es sieht so aus, als würde log4j die richtigen Konfigurationswerte lesen. –

+0

gut hier ist eine dumme Frage, bist du absolut positiv, dass die Protokollierungszeilen sogar getroffen werden, wenn der Code ausgeführt wird? Auch btw, Hinzufügen der Appender zweimal (zu root und zu "com.company.mass") führt dazu, Log-Nachrichten an den Appender geschickt zweimal –

+0

Dumm Frage, aber eine gute. Ich traf den Standard index.jsp, den Maven produziert, der zufällig die exakt gleiche Ausgabe (Hello World) produzierte, die mein Servett produzierte. Gehen Sie zu einer Seite mit protokollierten Protokollierungsarbeiten. –

0

Nicht sicher, ob Sie eine Priorität in Ihrem Root-Logger benötigen. Versuchen Sie, diese 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> 
+0

Leider haben diese Änderungen nicht behoben. –

0

Versuchen Hinzufügen der Zeile:

<param name="Threshold" value="ALL" /> 

auf Ihre massAppender Config

und dieser Linie

<priority value ="debug"/> 

in Ihrem Root-Definition

+0

Das macht keinen Unterschied. –

+0

Mein Tomcat6 hat nicht einmal eine Konfigurationsdatei mit "massAppender" drin. – djangofan

0

Wenn ich dieses Problem gestoßen bin ich konnte es beheben, indem ich common-logging.jar zu meiner Bereitstellungsassembly hinzufügte.