Журналирование приложений Tomcat 6 и log4j не выдает никаких результатов

StackOverflow https://stackoverflow.com/questions/917442

Вопрос

Я пытаюсь заставить журналирование приложения log4j (веб-приложение) работать в приложении Tomcat 6.У меня есть log4j-1.2.15.jar в моем каталоге WEB-INF, log4j.dtd и log4j.xml в WEB-INF/classes.

Мой log4j.xml выглядит так:

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

Мой сервлет находится в пакете:

package com.company.mass;

где регистратор объявлен как:

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

и в верхней части моего метода doGet(...) есть:

logger.error("foo");

Когда я развертываю приложение в Tomcat и перехожу к сервлету, оно работает правильно.Я даже получаю файл Mass.log, но в него ничего не помещается.Он также не отображается ни в каких других журналах, и явных ошибок нет.Есть идеи, что происходит?

Это было полезно?

Решение

Вы уверены, что log4j действительно использует ваш log4j.xml для его конфигурации, а не для другого файла в пути к классам?

Включить системное свойство -Dlog4j.debug чтобы log4j распечатывал информацию о том, какой именно файл конфигурации он использует.

Другие советы

Не уверен, нужен ли вам приоритет в корневом регистраторе.Попробуйте эту конфигурацию

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

Попробуйте добавить строку:

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

в вашу конфигурацию MassAppender

и эта линия

<priority value ="debug"/>

внутри вашего корневого определения

Когда я столкнулся с этой проблемой, я смог решить ее, добавив common-logging.jar к моей сборке развертывания.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top