# Log4j 日志级别 – Log4j2 日志级别示例

> 原文： [https://howtodoinjava.com/log4j/logging-levels-in-log4j/](https://howtodoinjava.com/log4j/logging-levels-in-log4j/)

在 [log4j 教程](https://howtodoinjava.com/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`中设置日志级别

```java
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

```

查看[`log4j2.properties`配置示例](https://howtodoinjava.com/log4j2/log4j-2-properties-file-configuration-example/)。

#### 2.2 在`log4j.xml`中设置日志级别

```java
<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>

```

查看[`log4j2.xml`配置示例](https://howtodoinjava.com/log4j2/log4j-2-xml-configuration-example/)。

## 3\. 日志级别如何工作？

在 log4j 中，日志级别具有顺序。

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

如果我们将日志级别设置为`X`，则级别大于等于`X`的任何日志请求都会记录在日志文件中。带有更低级别的任何请求都不会被记录。

例如，如果我们将日志记录级别设置为`INFO`，则应用可以记录范围为`INFO`，`WARN`，`ERROR`和`FATAL`的消息。

在此图中，垂直标题显示`LogEvent`的级别，而水平标题显示与适当的日志记录配置关联的级别。 交叉点表明允许`LogEvent`通过以便进一步处理（**是**）还是丢弃（**否**）。

![Log4j Log Levels](img/31a2bd247f68b9def9c310408deaab27.png)

Log4j 日志级别层次



## 4\. Log4j 日志级别示例

演示日志级别用法的 Java 程序。

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

```

程序输出。

```java
Info Message!
Warn Message!
Error Message!
Fatal Message!

```

学习愉快！

参考：

[Log4j 文档](https://logging.apache.org/log4j/2.0/manual/architecture.html)