Pergunta

Eu estou tentando obter a aplicação log4j (webapp) logging trabalhando em um aplicativo Tomcat 6. Eu tenho log4j-1.2.15.jar no meu diretório WEB-INF, log4j.dtd e log4j.xml em WEB-INF / classes.

As minhas log4j.xml parece com:

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

O meu servlet está no pacote:

package com.company.mass;

onde o logger é declarado como:

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

e no topo do meu método doGet (...) existe:

logger.error("foo");

Quando eu implantar o aplicativo no Tomcat e ir para o servlet, ele funciona corretamente. Eu até obter um arquivo mass.log, mas nada é colocado na mesma. Ele não aparece em quaisquer outros registos, quer, e não há erros óbvios. Alguma idéia do que está acontecendo?

Foi útil?

Solução

Você tem certeza que log4j está realmente usando seu log4j.xml para sua configuração, e não outro arquivo no classpath?

Ativar o -Dlog4j.debug propriedade do sistema para ter log4j imprimir as informações sobre exatamente qual arquivo de configuração que está usando.

Outras dicas

Não tenho certeza se você precisar de uma prioridade em sua logger raiz. Tente esta configuração

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

Tente adicionar a linha:

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

para o seu massAppender configuração

e esta linha

<priority value ="debug"/>

dentro de sua definição root

Quando eu encontrei este problema eu era capaz de resolvê-lo adicionando common-logging.jar ao meu implantação de montagem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top