Log4j没有将日志写入文件

时间:2014-10-13 08:31:20

标签: java logging log4j

的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 。 如果我将阈值更改为错误,则它会将内容写入文件。请帮我理解。

1 个答案:

答案 0 :(得分:1)

记录器的级别为ERROR,它不会覆盖appender的阈值。

记录器将接受>= ERROR的日志消息,因为您已将级别定义为ERROR。然后,您的记录器只定义了一个appender,其阈值为fatal,这意味着appender将处理级别为>=fatal的日志。这就是为什么error级别日志不会保存在您的日志文件中的原因。

当您更改threshold <= logger's level时,您的记录器接受的所有日志都将由appender处理。这就是为什么它&#34;工作&#34;如果您将阈值更改为error