Log4j 日志级别

日志级别用于对日志文件中的信息进行分类。但是它们以非常具体的方式进行分类,即按紧急程度分类。该级别允许您管理以下类型的信息:

  • 您可以在搜索过程中过滤您的日志文件。
  • 您可以管理您记录的信息量。

系统中给出的信息量和类型以及事件日志由配置文件中的 log4j 日志级别设置控制。每条日志消息都以消息级别为前缀。

日志级别是org.apache.log4j.Level类的一个实例。

Log4j 具有以下级别的日志记录:

日志级别 描述
ALL ALL级别打开所有级别的日志记录。它包括您定义的自定义日志记录级别。一旦配置了这个并且完全不考虑级别,那么所有附加程序将开始将日志事件倒入日志文件中。
DEBUG Debug 经常用于在开发时调试应用程序。设置此级别后,每条日志消息都会出现在日志文件中。它基本上属于开发人员。
INFO INFO 日志记录级别用于记录有关常规应用程序操作的消息。系统管理员实时查看信息日志,以确保系统当前正在发生的情况,以及正常流程中是否存在任何问题。
WARN WARN 日志级别用于指示您可能遇到问题并且您已检测到异常情况。也许您要求调用服务,但在自动重试连接之前失败了几次。这是出乎意料和不寻常的,但没有造成真正的伤害,也不知道问题会持续存在还是再次发生。有人应该调查警告。
ERROR ERROR 日志级别用于表示必须立即调查的严重问题。没有FATAL那么严重,但仍然是一个问题。它只是意味着您的应用程序遇到了真正不受欢迎的状态。例如,意外的格式化输入、数据库不可用。
FATAL FATAL 日志级别,如 ERROR,表示存在问题。但与 ERROR 不同的是,它表示非常严重的错误事件。在平常的日子里,你不会很在意它们的存在,但一旦它们出现,就预示着非常坏的消息,甚至是死亡的应用。
OFF 这是可能的最高等级,旨在关闭日志记录。
TRACE 这最近在 1.2 版中引入,并包含调试级别日志的更多信息。

如何设置日志级别?

在 log4j.properties 中设置日志级别

log4j.rootLogger=DEBUG, consoleAppender  
log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender  
log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout  
log4j.appender.consoleAppender.layout.ConversionPattern=[%t] %-5p %c %x - %m%n  
   
#Log info messages for package 'com.javatpoint.web.controller'  
log4j.logger.com.yiidian.web.controller=INFO, consoleAppender 

 在 log4j.xml 中设置日志级别

<log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'>  
    
  <appender name="console" class="org.apache.log4j.ConsoleAppender">  
    <param name="Target" value="System.out"/>  
    <layout class="org.apache.log4j.PatternLayout">  
    <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />  
    </layout>  
  </appender>  
   
  <logger name="com.yiidian.web.controller">  
    <level value="INFO" />  
    <appender-ref ref="console" />  
  </logger>  
    
  <root>  
    <level value="DEBUG" />  
    <appender-ref ref="console"></appender>  
  </root>  
    
</log4j:configuration>  

日志级别如何工作?

日志级别的工作实际上非常简单。在运行时,应用程序代码将创建日志请求,这将具有一个级别。同时,日志框架配置了日志级别,作为阈值。如果请求级别处于配置级别或更高级别,则会将其记录到配置的目标中。如果没有,则拒绝。就这么简单。

让我们将其视为以下级别的排名顺序:

ALL  < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 

因此,例如,如果日志框架级别设置为 WARN,则将接受具有任何级别 WARN、FATAL 和 ERROR 的请求,而其余请求将被拒绝。

在上图中,垂直标题显示 LogEvent 的级别,而水平标题显示与相应日志配置相关联的级别。

对于第一列,您将看到日志在每个级别中的工作方式。例如,对于 WARN,(FATAL、ERROR 和 WARN) 将是可见的。对于 OFF,什么都看不到。

Log4j 日志级别示例

# Define the root logger with appender file  
log = d:/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  

Java测试程序

package com.yiidian;

import org.apache.log4j.Logger;

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!");  
   }  
}  

现在编译并运行上面的程序,我们将在 d:/log4j/log.out 文件中得到以下输出:

Warn Message!
Error Message!
Fatal Message!

 

热门文章

优秀文章