Log4J日志级别

本文概述

  • 如何设置日志级别?
  • 日志级别如何工作?
日志记录级别用于对日志文件中的条目进行分类。但是它们以非常特定的方式进行分类, 即按紧急程度进行分类。该级别使你可以分离以下类型的信息:
  • 你可以在搜索过程中过滤日志文件。
  • 你可以管理记录的信息量。
系统中提供的信息的数量和类型以及事件日志由配置文件中的log4j级别设置控制。每条日志消息均以消息级别为前缀。
日志记录级别是org.apache.log4j.Level类的实例。
Log4j具有以下级别的日志记录:
Log Level Description
ALL 此级别打开所有级别的日志记录。它包括你定义的自定义日志记录级别。一旦配置了该级别并且根本不考虑级别, 那么所有附加程序都将开始将日志事件倒入日志文件中。
DEBUG 调试在开发时经常用于调试应用程序。设置此级别后, 每条日志消息都会显示为记录文件。它基本上属于开发人员。
INFO INFO日志记录级别用于记录有关常规应用程序操作的消息。系统管理员可以实时查看信息日志, 以确保当前系统上正在发生的事情以及正常流程中是否存在任何问题。
WARN WARN日志级别用于指示你可能有问题并且检测到异常情况。也许你是在要求调用服务, 但该服务几次失败后才进行自动重试。这是出乎意料且异常的, 但是并没有造成真正的伤害, 并且不知道问题是否会持续或再次发生。有人应该调查警告。
ERROR 错误日志级别用于表示必须立即调查的严重问题。虽然不如致命致命, 但仍然是一个问题。这仅表示你的应用程序已达到真正不希望的状态。例如, 意外的格式化输入, 数据库不可用。
FATAL 致命错误日志级别(例如ERROR)表示问题。但是与ERROR不同, 它指定了非常严重的错误事件。在平常的一天中, 你不会过多地考虑它们的存在, 但是一旦它们出现, 就表示非常不好的消息, 甚至意味着死亡。
OFF 这是最高级别, 旨在关闭日志记录。
TRACE 最近在1.2版中引入了该功能, 其中包括调试级别日志的更多信息。
如何设置日志级别? 在log4j.properties中设置日志级别
log4j.rootLogger=DEBUG, consoleAppenderlog4j.appender.consoleAppender=org.apache.log4j.ConsoleAppenderlog4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayoutlog4j.appender.consoleAppender.layout.ConversionPattern=[%t] %-5p %c %x - %m%n #Log info messages for package 'com.srcmini.web.controller'log4j.logger.com.srcmini.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="http://www.srcmini.com/System.out"/> < layout class="org.apache.log4j.PatternLayout"> < param name="ConversionPattern" value="http://www.srcmini.com/%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" /> < /layout> < /appender> < logger name="com.srcmini.web.controller"> < level value="http://www.srcmini.com/INFO" /> < appender-ref ref="console" /> < /logger> < root> < level value="http://www.srcmini.com/DEBUG" /> < appender-ref ref="console"> < /appender> < /root> < /log4j:configuration>

日志级别如何工作? 日志记录级别的工作实际上非常简单。在运行时, 应用程序代码将创建具有级别的日志记录请求。同时, 日志记录框架具有配置的日志级别, 该级别用作阈值。如果请求级别处于配置级别或更高级别, 则它将记录到配置的目标。如果没有, 则拒绝。就这么简单。
让我们将其视为以下级别的等级顺序:
ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

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

文章图片
在上图中, 垂直标题显示LogEvent的级别, 而水平标题显示与适当的日志记录配置关联的Level。
对于第一列, 你将看到日志在每个级别的工作方式。例如, 对于WARN, (FATAL, ERROR和WARN)将可见。如果设置为OFF, 则看不到任何内容。
Log4j级别示例
【Log4J日志级别】配置文件:
# Define the root logger with appender filelog = /usr/home/log4jlog4j.rootLogger = WARN, FILE# Define the file appenderlog4j.appender.FILE=org.apache.log4j.FileAppenderlog4j.appender.FILE.File=${log}/log.out# Define the layout for file appenderlog4j.appender.FILE.layout=org.apache.log4j.PatternLayoutlog4j.appender.FILE.layout.conversionPattern=%m%n

Java程序:
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!"); }}

现在编译并运行上面的程序, 我们将在c:/usr/home/log4j/log.out文件中获得以下输出:
Warn Message!Error Message!Fatal Message!

    推荐阅读