【问题标题】:help with log4j.xml帮助 log4j.xml
【发布时间】:2009-10-20 21:22:15
【问题描述】:

我在为 Quartz 网络应用程序配置我的 log4j.xml(附在下面)时遇到了难题。

它正在向标准输出(我的 Tomcat 实例随后记录)输出由 Quartz 的 LoggingJobHistory 插件报告的 INFO 的日志消息。它使用下面定义的“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>

【问题讨论】:

    标签: java log4j


    【解决方案1】:

    Tomcat 拦截所有输出到 stdout 和 stderr 并将它们重定向到 log4j。因此,任何使用 stdout 或 stderr 的应用程序代码都将出现在通常的 log4j 日志文件中。

    我怀疑 LoggingJobHistory 插件正在向标准输出写入内容,这是一种糟糕的做法,但并不令人惊讶(Quartz 代码库并不完全是一流的)。

    【讨论】:

    • hmmm... 我会怀疑——起初我不确定是应用程序 stdout 还是 log4j 写入 stdout,除了我可以控制 log4j 日志记录格式,并且调整输出。 (参见顶部的“ZZZ”注释)
    • 很公平,但这不会改变 tomcat 的工作方式。
    • 当然,问题不是为什么 stdout 最终出现在 Tomcat 日志中(这是给定的,Tomcat 甚至称它为 stdout_xxx.log),而是为什么石英将内容发送到与 stdout 相关的-日志。
    猜你喜欢
    • 2018-12-21
    • 2011-06-20
    • 2011-07-28
    • 2011-10-04
    • 2011-08-03
    • 2011-11-27
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    相关资源
    最近更新 更多