【问题标题】:Can't find error(), debug(), info() methods in 'log' object which is created via Lombok's '@Slf4j' annotation在通过 Lombok 的“@Slf4j”注释创建的“log”对象中找不到 error()、debug()、info() 方法
【发布时间】:2021-03-30 18:47:47
【问题描述】:

有人可以帮我在 Lombok 中使用 @Slf4j 注释吗?

我更喜欢在我的 SpringBoot 应用程序中记录一些内容。为此,我想使用 Lombok 的 @Slf4j 注释。我在 IntelliJ IDEA 中安装了 Lombok 插件,打开“注释处理”,将 @Slf4j 注释添加到我的类中,并将 lombok 依赖项添加到我的 pom.xml 文件中。现在我可以在类中找到对象“日志”,但我不能对其应用任何日志方法(如 error()、debug()、info() 等)。为什么找不到这些方法?

IntelliJ IDEA 社区 2020.3
Lombok 插件捆绑 203.7717.56
龙目岛 1.18.6

pom.xml 中的依赖关系:

<properties>
    <lombok.version>1.18.6</lombok.version>
</properties>

<dependencies>
     <dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
         <version>${lombok.version}</version>
     </dependency>
</dependencies>

登录我的班级:

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@RequiredArgsConstructor
@Service
public class ImportServiceImpl implements ImportService {
   ...
   public void importData() {
      log.info("some log");
   }
   ...
}

【问题讨论】:

  • 对象上显示了哪些方法?有吗?而且您还确定您在类路径上有 slf4j 依赖项?
  • @dunni 没有任何方法。 IDE 提供继续我的“日志”。带有'args'、'field'、'cast'、'castvar'等java构造简写形式。不,我不确定(见截图 - prnt.sc/1104hgm)。我想,如果我添加 lombok 依赖项,那么 slf4j 将传递(隐式)添加到我的项目中。如果不是,我应该为 slf4j 添加额外的依赖项吗?
  • 不,Lombok 不添加任何传递依赖项。在您的情况下,如果您添加 spring-boot-starter-logging,则您拥有日志记录所需的所有依赖项。
  • @dunni 非常感谢!你帮了我!我必须添加依赖项 spring-boot-starter-logging (或者依赖项 logbook-spring-boot-starter),但它一次对我不起作用,我还必须单击“重新加载所有 Maven 项目”按钮我的 IntelliJ IDEA 的 Maven 选项卡,因为由于某种原因,在添加提到的依赖项时,我没有立即获得效果
  • 关于 IntelliJ 问题,当您在 pom.xml 中进行任何更改时,还有启用自动导入的设置。您可以在 Settings -> Build, Execution, Deployment -> Build Tool 中找到它,然后勾选“Reload project after changes in the build script”,勾选“Any changes”。

标签: java spring-boot slf4j lombok intellij-lombok-plugin


【解决方案1】:

Lombok 本身不带任何关于日志框架等的依赖,需要自己添加日志框架依赖。

例如在您的情况下,添加以下依赖项,它将带来 SLF4J 以及 Logback 作为日志记录实现:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
</dependency>

【讨论】:

  • 我遇到了同样的问题。我已经添加了这个依赖项(使用 Gradle),但它似乎没有工作。
【解决方案2】:

我已经准备好了一切。构建工作正常,我能够运行应用程序而没有任何编译错误。只是 IDE 在抱怨。

就我而言,我必须使缓存无效。

转到文件 > 使缓存无效(选择“清除文件系统缓存和本地历史记录”)> 无效并重新启动。

希望有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2020-01-04
    • 1970-01-01
    • 2015-04-23
    • 2017-05-05
    相关资源
    最近更新 更多