Log4j 日志级别
精华
小牛编辑
107浏览
2023-03-14
日志级别用于对日志文件中的信息进行分类。但是它们以非常具体的方式进行分类,即按紧急程度分类。该级别允许您管理以下类型的信息:
- 您可以在搜索过程中过滤您的日志文件。
- 您可以管理您记录的信息量。
系统中给出的信息量和类型以及事件日志由配置文件中的 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.cn.xnip.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="cn.xnip.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 cn.xnip;
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!