在Tomcat中配置log4j.xml

时间:2017-06-07 09:01:38

标签: java log4j

我想为在tomcat中运行的简单应用配置日志,我想将除错误级别之外的所有日志发送到一个文件,并将错误发送到另一个文件。

我应该如何配置log4j.xml以使其正常工作?

<appender name="regular-container" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="regularLogs.log" />
</appender>

<appender name="error-container" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="errorLogs.log" />
</appender>

<logger name="regular-container">
 ?????????????????????
</logger>

<logger name="error-container">
 ?????????????????????
</logger>

2 个答案:

答案 0 :(得分:1)

试试这个log4j.xml:

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

    <appender name="errorsOnly" class="org.apache.log4j.RollingFileAppender">
        <param name="file" value="errorLogs.log" />
        <param name="threshold" value="ERROR" />
    </appender>

    <appender name="regular" class="org.apache.log4j.RollingFileAppender">
        <param name="file" value="regularLogs.log" />
        <param name="threshold" value="DEBUG" />
    </appender>

    <root>
        <level value="DEBUG" />
        <appender-ref ref="errorsOnly" />
        <appender-ref ref="regular" />
    </root>

</log4j:configuration>

请注意,这包括在errorsOnly中记录FATAL,尽管我认为没关系。错误仅在第一次将阈值设置为ERROR时意味着错误级别或更高级别由errorsOnly处理。默认情况下,处理由错误处理尚未处理的DEBUG或更高版本。我找到了similar issue提供了另一个例子。

答案 1 :(得分:0)

感谢您的回答,但它没有用。为每个appender使用filter参数,是的。

<filter class="org.apache.log4j.varia.LevelRangeFilter">
        <param name="levelMin" value="ERROR" />
        <param name="levelMax" value="FATAL" />
    </filter>