java - log4j.xml 帮助

标签 java log4j

我在为 Quartz Web 应用程序配置 log4j.xml(见下文)时遇到了困境。

它正在将 Quartz 的 LoggingJobHistory 插件报告的信息发送到标准输出(我的 Tomcat 实例然后记录)。它使用下面定义的“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>

最佳答案

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

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

关于java - log4j.xml 帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1597394/

相关文章:

java - 如何使用 CronTriggeringPolicy 在运行时强制 RollingFile?

java - 将 log4j.properties 放入 Eclipse 中的 Maven 项目中,其中 "default package"文件夹内有一些 "src"?

java - GUI (java) 中的 jTable 不显示数据库中的所有数据!表模型中的错误?

java - LeJOS NXT 编程

java - 将具有内容列表的对象与另一个对象进行比较

java - 记录调试消息

java - 使用 XML 文件 (log4j2.xml) 配置 Log4j 2

java - 如何使用 log4j 记录每 20 个发生的事件?

java - Java 数学库的 Objective-C 等效项是什么?

将文本文件的内容放入数组然后显示和操作数组内容的 Java 问题