【问题标题】:Log4j is not writing the log into the fileLog4j 没有将日志写入文件
【发布时间】:2014-10-13 16:37:45
【问题描述】:

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。 如果我将阈值更改为 error,那么它将内容写入文件。请帮我理解。

【问题讨论】:

标签: java logging log4j


【解决方案1】:

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

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

当您更改 threshold &lt;= logger's level 时,您的 logger 接受的所有日志都将由 appender 处理。这就是为什么如果您将阈值更改为error,它会“起作用”。

【讨论】:

  • 谢谢,这真的很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
相关资源
最近更新 更多