log4j - 日志记录级别

org.apache.log4j.Level 级别。您还可以通过对 Level 类进行子类化来定义自定义级别。

级别 说明
ALL 所有级别,包括自定义级别。
DEBUG 指定对调试应用程序最有用的细粒度信息事件。
INFO 指定在粗粒度级别突出显示应用程序进度的信息消息。
WARN 指定潜在有害情况。
ERROR 指定可能仍允许应用程序继续运行的错误事件。
FATAL 指定可能导致应用程序中止的非常严重的错误事件。
OFF 最高级别,旨在关闭日志记录。
TRACE 指定比 DEBUG 更细粒度的信息事件。

级别如何工作?

如果 p,则在级别为 q 的记录器中,级别为 p 的日志请求启用 >= q。此规则是 log4j 的核心。它假设级别是有序的。对于标准级别,我们有 ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF。

以下示例显示了如何过滤所有 DEBUG 和 INFO 消息。此程序使用记录器方法 setLevel(Level.X) 来设置所需的日志记录级别:

此示例将打印除 Debug 和 Info 之外的所有消息:

import org.apache.log4j.*;

public class LogClass {
   private static org.apache.log4j.Logger log = Logger.getLogger(LogClass.class);
   
   public static void main(String[] args) {
      log.setLevel(Level.WARN);

      log.trace("Trace Message!");
      log.debug("Debug Message!");
      log.info("Info Message!");
      log.warn("Warn Message!");
      log.error("Error Message!");
      log.fatal("Fatal Message!");
   }
}

当您编译并运行 LogClass 程序时,它将生成以下结果 −

Warn Message!
Error Message!
Fatal Message!

使用配置文件设置级别

log4j 为您提供基于配置文件的级别设置,当您想要更改调试级别时,您无需更改源代码。

以下是一个示例配置文件,它将执行与我们在上述示例中使用 log.setLevel(Level.WARN) 方法执行的相同任务。

# 使用附加文件定义根记录器
log = /usr/home/log4j
log4j.rootLogger = WARN, FILE

# 定义文件附加器
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out

# 定义文件布局appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

现在让我们使用以下程序 −

import org.apache.log4j.*;

public class LogClass {

   private static org.apache.log4j.Logger log = Logger.getLogger(LogClass.class);
   
   public static void main(String[] args) {
   
      log.trace("Trace Message!");
      log.debug("Debug Message!");
      log.info("Info Message!");
      log.warn("Warn Message!");
      log.error("Error Message!");
      log.fatal("Fatal Message!");
   }
}

现在编译并运行上述程序,您将在 /usr/home/log4j/log.out 文件中得到以下结果−

Warn Message!
Error Message!
Fatal Message!