我想为在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>
答案 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>