Log4j2 结合 SLF4J 使用

发布时间 2023-11-27 19:14:08作者: 炎黄子孙,龙的传人

Log4j2 结合 SLF4J 使用

了解使用 SLF4J API 配置 Log4j2 日志记录。
我们将查看所需的依赖项、示例配置和使用日志语句的演示。

一、Log4j2 和 SLF4j 绑定依赖

为了使 Log4j2 与 SLF4J 一起工作,我们需要包含以下 3 个依赖项。

  • log4j-slf4j-impl.jar – Log4j 2 SLF4J 绑定。 它允许编码为 SLF4J API 的应用程序使用 Log4j2 作为实现。
  • log4j-api.jar – 为实现类提供创建日志记录实现所需的适配器组件接口。
  • log4j-core.jar – 核心 Log4j 实现类。

1. Maven 依赖

pom.xml

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.22.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.22.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.22.0</version>
</dependency>

2. gradle 依赖

build.gradle

dependencies {
  compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.20.0'
  compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.20.0'
  compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.20.0'
}

二、日志文件配置

可以使用文件类型为: log4j2.properties、log4j2.xml 或 log4j2.json 文件,用于配置所需的记录器和附加程序。
将配置文件放置在资源文件夹或应用程序类路径中。 所有日志语句都将使用这些记录器进行记录。

我们以 XML 配置为例,并使用控制台日志记录进行演示。 您也可以使用其他有用的日志记录模式之一。

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
    <Properties>
        <Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} - %m%n</Property>
    </Properties>
 
    <Appenders>
        <Console name="console" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="${LOG_PATTERN}"/>
        </Console>
    </Appenders>
 
    <Loggers>
        <Root level="info">
            <AppenderRef ref="console"/>
        </Root>
    </Loggers>
</Configuration>

三、例子

使用类 Logger 和 LoggerFactory 在应用程序代码中编写日志语句。 这两个类都来自包 org.slf4j。

// Main.java

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
  public static void main(final String[] args)
  {
      Logger logger = LoggerFactory.getLogger(Main.class);
      logger.info("Hello World !!");
  }
}

运行 main() 方法并观察控制台中的输出:

2021-12-13 22:08:14 INFO  Main - Hello World !!

以上就是 log4j2 和 slf4j 配置示例的全部内容。







Ref