log4j - Logging Levels

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

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

级别如何工作?

级别为 q 的记录器中的级别为 p 的日志请求已启用如果p> = q.这条规则是log4j的核心.它假定级别是有序的.对于标准水平,我们有ALL< DEBUG<信息<警告<错误<致命<关闭.

以下示例显示了我们如何过滤所有DEBUG和INFO消息.此程序使用logger方法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)

# Define the root logger with appender file
log = /usr/home/log4j
log4j.rootLogger = WARN, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out

# Define the layout for file 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 file :

Warn Message!
Error Message!
Fatal Message!