的log4j.xml
<appender name="U_R_A" class="org.apache.log4j.DailyRollingFileAppender">
<param name="Threshold" value="fatal" />
<param name="Append" value="true" />
<param name="File" value="/logs/log_file.log" />
<param name="DatePattern" value="'.'yyyy-MM-dd-HH" />
<layout class="org.apache.log4j.PatternLayout" />
</appender>
<logger name="U_Q_R" additivity="false">
<!-- Overridding from fatal to error -->
<level value="ERROR" />
<appender-ref ref="U_R_A" />
</logger>
Main.java
public class Main{
private static Logger logger = Logger.getLogger("U_Q_R");
public static void main(String[] args) {
DOMConfigurator.configure("log4j.xml");
logger.error("Some error happened!!");
}
}
Log4j没有将错误写入文件 log_file.log 。 如果我将阈值更改为错误,则它会将内容写入文件。请帮我理解。
答案 0 :(得分:1)
记录器的级别为ERROR
,它不会覆盖appender的阈值。
记录器将接受>= ERROR
的日志消息,因为您已将级别定义为ERROR
。然后,您的记录器只定义了一个appender,其阈值为fatal
,这意味着appender将处理级别为>=fatal
的日志。这就是为什么error
级别日志不会保存在您的日志文件中的原因。
当您更改threshold <= logger's level
时,您的记录器接受的所有日志都将由appender处理。这就是为什么它&#34;工作&#34;如果您将阈值更改为error
。