在 SpringBoot 应用程序中为 Java 使用简单日志记录门面

Using Simple Logging Facade for Java n a SpringBoot app

我想使用@Slf4j 注释,所以我在我的 pom.xml 文件中导入了这个依赖项

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

但我遇到错误无法解析符号 Slf4j

@Service
@Slf4j
@Transactional(readOnly = true)
public class PasswordResetTokenService {
..
}

我相信@Slf4j 注释实际上不是来自 Slf4j,而是来自 Lombok。请看这个 link 似乎提供了一个很好的模板,可以从 https://howtodoinjava.com/spring-boot2/logging/logging-with-lombok/

开始

如果您查看 Application.java 的摘录。注释的导入来自 lombok

import lombok.extern.slf4j.Slf4j;

注释@Slf4j 是 Lombok 注释,不存在于 slf4j 依赖项中。

如果你想使用这个注解而不是声明一个记录器字段,你需要向 Lombok 添加一个额外的依赖:

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.10</version>
    <scope>provided</scope>
</dependency>

在 Spring 引导的情况下,父 POM 可能已经指定了版本。那就不用再声明具体的版本了

参见:

https://projectlombok.org/features/log

https://projectlombok.org/api/lombok/extern/slf4j/Slf4j.html