2009-10-20 6 views
0

У меня есть дилемма, конфигурирующая мой log4j.xml (прилагается ниже) для веб-приложения Quartz.help с log4j.xml

Он выплескивает сообщения журнала на stdout (который мой экземпляр Tomcat затем регистрирует) для INFO, сообщенного плагином LoggingJobHistory Quartz. Он использует приложение «stdout», определенное ниже; Я могу сказать это, потому что я поставил там «ZZZ», и он пробивается в журнал Tomcat.

Я не могу понять, почему. Единственными вещами, которые используют приложение «stdout», являются root и org.apache, оба - для WARN. Почему я получаю сообщения INFO?

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 

    <appender name="stdout" class="org.apache.log4j.ConsoleAppender"> 
     <!-- <layout class="org.apache.log4j.TTCCLayout"/> --> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="ZZZ %d %-5p [%t] %C{2} (%F:%L) - %m%n"/> 
     </layout> 
    </appender> 

    <appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender"> 
     <param name="File" value="${quartz.root}/WEB-INF/logs/quartz-log.txt"/> <!-- orther options ${user.home} --> 
     <param name="DatePattern" value="'.'yyyy-MM-dd"/> 
     <param name="Append" value="true"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> 
     </layout> 
    </appender> 

    <appender name="appFILE" class="org.apache.log4j.DailyRollingFileAppender"> 
     <param name="File" value="${quartz.root}/WEB-INF/logs/app-log.txt"/> <!-- orther options ${user.home} --> 
     <param name="DatePattern" value="'.'yyyy-MM-dd"/> 
     <param name="Append" value="true"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> 
     </layout> 
    </appender> 

    <appender name="HtmlAppender" class="org.apache.log4j.DailyRollingFileAppender"> 
      <param name="File" value="${quartz.root}/WEB-INF/logs/ShortResults.html"/> 
     <param name="DatePattern" value="'.'yyyy-MM-dd-HH'.html'"/> 
     <layout class="org.apache.log4j.HTMLLayout"/> 
      <!--/layout--> 
     </appender>   

    <!-- log detail configuration --> 
    <logger name="org.quartz"> 
     <level value="info"/> 
     <appender-ref ref="FILE"/> 
     <appender-ref ref="HtmlAppender"/> 
    </logger> 

    <logger name="com.opensymphony"> 
     <level value="info"/> 
     <appender-ref ref="HtmlAppender"/> 
    </logger> 

    <logger name="org.apache"> 
     <level value="warn"/> 
     <appender-ref ref="stdout"/> 
    </logger> 

    <root> 
     <level value="warn"/> 
     <appender-ref ref="stdout"/> 
     <appender-ref ref="FILE"/> 
    </root> 


</log4j:configuration> 

ответ

1

Tomcat перехватывает весь вывод на stdout и stderr и перенаправляет их на log4j. Любой код приложения, который использует stdout или stderr, будет отображаться в обычных файлах журнала log4j.

Я подозреваю, что плагин LoggingJobHistory записывает материал в стандартную версию, что является плохой практикой, но не ужасно неожиданно (Кварцевая кодовая база не является точно верхней меткой).

+0

hmmm ... Я бы предположил, что - сначала я не был уверен, что это было приложение stdout или log4j, записывающее на stdout, за исключением того, что я могу управлять форматом журнала log4j, и это улучшает вывод. (см. примечание «ZZZ» наверху) –

+0

-1 - нет использования stdout, см. http://svn.opensymphony.com/fisheye/browse/quartz/branches/quartz_1-6/src/java/org/quartz/ плагины/история/LoggingJobHistoryPlugin.java? r = 654 – fvu

+0

Достаточно справедливо, но это не меняет способ работы tomcat. – skaffman

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