log4j| log4j-日志级别

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

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

日志级别是如何运作的?

如果 p> = q,则在级别为q的记录器中启用级别为p的日志请求。此规则是log4j的核心。它假定级别是有序的。对于标准级别,我们有
ALL < TRACE < 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)方法执行的任务相同的任务。

# 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文件中得到以下结果:

Warn Message!
Error Message!
Fatal Message!
发布了457 篇原创文章 · 获赞 147 · 访问量 43万+

猜你喜欢

转载自blog.csdn.net/u011479200/article/details/102464164