为什么除了 Lombok 依赖项之外还需要添加 Slf4j 依赖项才能使日志记录正常工作?

Why do I need to add Slf4j dependencies, in addition to the Lombok dependency, for logging to work?

为什么我必须添加这 2 个依赖项才能使我的 Lombok @Slf4j 日志记录正常工作?我正在定义一个 log4j.properties 文件,我在其中启用对某些第 3 方包的调试。如果我不添加这 2 个 slf4j 依赖项,日志记录将不起作用。这不应该仅适用于 Lombok 依赖项吗?

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.36</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.36</version>
    </dependency>

这是我的 lombok 依赖项:

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.22</version>
    </dependency>

根据Lombok doc,Lombok 注释@Slf4j 创建

private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);

因此需要slf4j依赖。并且由于 slf4j 只是各种实际日志库的抽象,例如 log4j、log4j2 和 logback,因此需要桥接依赖项 slf4j-log4j12

使用slf4j抽象方便切换到另一个日志库。

如果您只想坚持使用 log4j2 日志库,您可以添加 log4j2 dependencies 使用 @Log4j2 创建

private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class)