原文: https://howtodoinjava.com/log4j/logging-levels-in-log4j/
在 log4j 教程中,了解 log4j 日志记录级别。 系统和事件日志中显示的信息量和类型由配置文件中的 log4j 级别设置控制。 请记住,日志中的每个消息都以消息级别为前缀。
在 Log4j 中,级别是org.apache.log4j.Level
类的实例。
1. Log4j 日志级别
Log4j 具有以下级别的日志记录。
日志级别 | 描述 |
---|---|
ALL |
此级别用于打开所有级别的日志记录。 一旦配置完成,就根本不考虑级别。 所有追加程序将开始将日志事件倒入日志文件中。 |
TRACE |
最近在 1.2 版中引入了此功能,并将更多信息添加到调试级别日志中。 |
DEBUG |
您可以在开发时大量使用它们来调试应用。 设置此级别后,每条日志消息都会进入日志文件。 它基本上属于开发人员。 |
INFO |
重要的业务流程已经完成,好消息“如预期”。 系统管理员将实时查看信息日志,以确保当前系统上正在发生的事情以及正常流程中是否存在任何问题。 |
WARN |
它建议继续该应用,但您应格外小心。 该应用可以容忍警告消息,但是应该始终对警告消息进行合理的检查,以确保它们不会证明应用中等待点火的隐藏饼干。 |
ERROR |
它对您大喊大叫,出了什么问题,您必须立即进行调查。 这仅表示您的应用已达到真正不希望的状态。 例如数据库不可用或意外的格式化输入等。 |
FATAL |
在正常情况下,您不会感觉到它们的存在,但是一旦它们出现,就表示非常不好的消息,甚至是应用死亡。 |
OFF |
很简单。 没有记录! |
在 log4j 中,对于根记录器 – 默认日志级别为
DEBUG
。
2. 如何设置日志级别
2.1 在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.howtodoinjava.web.controller'
log4j.logger.com.howtodoinjava.web.controller=INFO, consoleAppender
2.2 在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.howtodoinjava.web.controller">
<level value="INFO" />
<appender-ref ref="console" />
</logger>
<root>
<level value="DEBUG" />
<appender-ref ref="console"></appender>
</root>
</log4j:configuration>
3. 日志级别如何工作?
在 log4j 中,日志级别具有顺序。
ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
如果我们将日志级别设置为X
,则级别大于等于X
的任何日志请求都会记录在日志文件中。带有更低级别的任何请求都不会被记录。
例如,如果我们将日志记录级别设置为INFO
,则应用可以记录范围为INFO
,WARN
,ERROR
和FATAL
的消息。
在此图中,垂直标题显示LogEvent
的级别,而水平标题显示与适当的日志记录配置关联的级别。 交叉点表明允许LogEvent
通过以便进一步处理(是)还是丢弃(否)。
Log4j 日志级别层次
4. Log4j 日志级别示例
演示日志级别用法的 Java 程序。
import org.apache.log4j.*;
public class LogLevelExample
{
private static Logger logger = Logger.getLogger(LogLevelExample.class);
public static void main(String[] args) {
logger.setLevel(Level.INFO);
logger.trace("Trace Message!");
logger.debug("Debug Message!");
logger.info("Info Message!");
logger.warn("Warn Message!");
logger.error("Error Message!");
logger.fatal("Fatal Message!");
}
}
程序输出。
Info Message!
Warn Message!
Error Message!
Fatal Message!
学习愉快!
参考: