【问题标题】:@Slf4j picking up wrong slf4j interface@Slf4j 选择了错误的 slf4j 接口
【发布时间】:2022-01-10 16:27:54
【问题描述】:

我有一个包含以下内容的 gradle 应用程序:

implementation 'ch.qos.logback:logback-classic'
implementation 'ch.qos.logback.contrib:logback-json-classic:0.1.5'
implementation 'ch.qos.logback.contrib:logback-jackson:0.1.5'
...
implementation 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

在我的课程中:

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class ...

但是,当 ctrl + 单击任何 log.xxx 语句时,它会将我带到一个 slf4j,它是我拥有的另一个库的一部分,而不是主要的 lombok 库,我不知道为什么,因为导入来自 lombok。其他没有这个库的模块按预期去lombok > slf4j。

它有效,但有没有办法以某种方式强制它?

【问题讨论】:

    标签: java logging slf4j lombok


    【解决方案1】:

    Lombok 不包含 Slf4j,也不依赖于它。

    你必须提供你自己的。

    如果您添加@Slf4j,lombok 将生成依赖于某些 slf4j-api 版本的编译时和运行时可用性的代码,您必须自己提供这些代码。

    如果您在log.warn("foo") 中按住 ctrl 单击 warn,您的 IDE 将带您进入您提供的依赖项中的 warn 方法,通常在 slf4j-api-<version>.jar 中。如果您单击 log 部分,它应该会将您带到班级顶部的 @Slf4j 注释。

    免责声明:我是 Lombok 项目的维护者。

    【讨论】:

      猜你喜欢
      • 2021-01-31
      • 1970-01-01
      • 2016-10-28
      • 2016-12-03
      • 2012-07-06
      • 1970-01-01
      • 2016-04-20
      • 2023-03-28
      相关资源
      最近更新 更多