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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top