在本篇Log4j2教程中,学习有关log4j日志级别的知识。日志级别用于控制添加到日志语句中的信息量和类型。
1. Logging Levels
Log4j2支持以下日志级别:
- TRACE
最低级别。用于跟踪程序的执行流。只用于调试目的。生成的日志量会非常大。 - DEBUG
用于记录调试信息。日志量会很大。 - INFO
默认级别。用于记录程序一般运行信息。这是你想在每个环境下记录的最低级别。 - WARN
用于记录潜在问题信息。这些消息指示软件正在按预期工作,但可能会发生问题。 - ERROR
用于记录错误事件。这些事件会对系统的操作产生负面影响。 - FATAL
最高级别。用于记录致命错误事件。这些事件将导致应用程序崩溃。 - OFF
用于关闭日志记录。所有日志记录请求都会被忽略。
2. 设置日志级别
2.1 在log4j2.properties中设置日志级别
给定的示例设置DEBUG日志级别为root记录器
rootLogger.level = debug
appender.console.type = Console
appender.console.name = consoleLogger
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
2.2 在log4j2.xml中设置日志级别
<Configuration status="warn">
<Appenders>
<!-- Console appender configuration -->
<Console name="console" target="SYSTEM_OUT">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</Console>
</Appenders>
<Loggers>
<!-- Root logger referring to console appender -->
<Root level="DEBUG" additivity="false">
<AppenderRef ref="console" />
</Root>
</Loggers>
</Configuration>
3. 日志级别的工作原理
在log4j中,日志级别根据分配给它们的整数值排序,如下所示:
ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
如果我们将日志级别设置为'X',则级别 >= X的任何日志请求都将记录在日志文件中。
例如,如果我们将日志级别设置为`INFO`,则应用程序将记录`INFO`、`WARN`、`ERROR`和`FATAL`范围内的消息。所有DEBUG和TRACE日志不会添加到日志文件中。
4. Log4j日志级别示例
Java程序演示日志级别的使用。该示例将日志级别设置为INFO,然后在不同的级别记录多个消息。
根据我们的讨论,该程序将打印除DEBUG和TRACE之外的所有日志消息。
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!