2012-09-17 2 views
1

Я использую log4j для входа в мое приложение. Я пытаюсь разного уровня журналов в разных файлах, но что-то не так. Любая помощь, решая эту проблему, будет высоко оценена.записывать различные уровни журналов в разные файлы с log4j

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 

<appender name="console" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Target" value="System.out"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/> 
    </layout> 
</appender> 

<appender name="DEBUG" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="TCS_patch_9/log/retailer_debug.log" /> 
    <param name="Threshold" value="DEBUG" /> 
    <param name="MaxFileSize" value="2MB"/> 
    <param name="MaxBackupIndex" value="3"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d{ISO8601} %-5p %c - %m%n"/> 
    </layout> 
</appender> 

<appender name="INFO" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="TCS_patch_9/log/retailer_info.log" /> 
    <param name="Threshold" value="INFO" /> 
    <param name="MaxFileSize" value="2MB"/> 
    <param name="MaxBackupIndex" value="3"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d{ISO8601} %-5p %c - %m%n"/> 
    </layout> 
</appender> 
<appender name="ERROR" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="TCS_patch_9/log/retailer_error.log" /> 
    <param name="Threshold" value="ERROR" /> 
    <param name="MaxFileSize" value="2MB"/> 
    <param name="MaxBackupIndex" value="3"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d{ISO8601} %-5p %c - %m%n"/> 
    </layout> 
</appender> 
<appender name="FATAL" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="TCS_patch_9/log/retailer_repeat_delay.log" /> 
    <param name="Threshold" value="FATAL" /> 
    <param name="MaxFileSize" value="2MB"/> 
    <param name="MaxBackupIndex" value="3"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d{ISO8601} %-5p %c - %m%n"/> 
    </layout> 
</appender> 

    <root> 
    <priority value ="error" /> 
    <appender-ref ref="console"/> 
    <appender-ref ref="DEBUG"/> 
    <appender-ref ref="INFO"/> 
    <appender-ref ref="ERROR"/> 
    <appender-ref ref="FATAL"/> 
    </root> 

</log4j:configuration> 
+2

Что не так? – oers

+0

Добро пожаловать в SO. Трудно помочь, если мы не знаем, что поведение IS нежелательно. –

+0

Спасибо JohnB и другие. Проблема в том, что я пытаюсь фильтровать свои сообщения. Я хочу регистрировать сообщения об ошибках в retailer_error.log и info log в retailer_info.log и аналогично для других. – seeker

ответ

5

Стандартное поведение для log4j appenders является то, что они входят в систему все сообщения на их пороговый уровень или выше, то есть к appender'у с пороговым INFO будет регистрировать INFO, WARN, ERROR и FATAL сообщений, но не DEBUG. Если вы хотите регистрировать только INFO сообщения, но не WARN и выше you need to use a LevelMatchFilter.

Вам также необходимо установить приоритет корневого регистратора на DEBUG, иначе он будет отправлять сообщения ERROR и FATAL в свои приложения, а файлы DEBUG и INFO будут пустыми.

+4

Вот ссылка на пример файла конфигурации: http://wiki.apache.org/logging-log4j/LogToAppenderByLevel – dertoni

+0

thansk @dertoni предоставленная вами ссылка также поможет мне :) – seeker

Смежные вопросы