Не удается найти методы error(), debug(), info() в объекте log, созданном с помощью аннотации Lombok @Slf4j.

Может ли кто-нибудь помочь мне с аннотацией @ Slf4j на Ломбоке?

Я предпочитаю записывать что-то в свое приложение SpringBoot. Для этого я хочу использовать аннотацию @Slf4j от Ломбока. Я установил плагин Lombok в свою IntelliJ IDEA, включил «Обработку аннотаций», добавил аннотацию @Slf4j в свой класс и добавил зависимость от lombok в мой файл pom.xml. Теперь я могу найти объект «журнал» в классе, но я не могу применить к нему какие-либо методы журнала (например, error(), debug(), info() и т. д.). Почему эти методы не найдены?

IntelliJ IDEA Community 2020.3
Плагин Lombok в комплекте 203.7717.56
lombok 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");
   }
   ...
}

person Oleg Sandro    schedule 30.03.2021    source источник
comment
Какие методы показаны на объекте? Есть ли вообще? И вы также уверены, что у вас есть зависимости slf4j от пути к классам?   -  person dunni    schedule 30.03.2021
comment
@dunni Нет никаких методов. IDE предлагает продолжить мой "лог". с «args», «field», «cast», «castvar» и другими краткими формами построения Java. Нет, я не уверен (см. скриншот - prnt.sc/1104hgm). Я думал, что если я добавлю ломбок-зависимость, то slf4j добавится в мой проект транзитивно (неявно). Если нет, следует ли добавить дополнительную зависимость для slf4j?   -  person Oleg Sandro    schedule 30.03.2021
comment
Нет, Lombok не добавляет транзитивных зависимостей. В вашем случае, если вы добавите spring-boot-starter-logging, у вас будут все зависимости, необходимые для ведения журнала.   -  person dunni    schedule 30.03.2021
comment
@dunni Большое спасибо! Вы помогли мне! Мне пришлось добавить зависимость spring-boot-starter-logging (или альтернативно зависимость logbook-spring-boot-starter), но у меня это не сработало сразу, также мне пришлось нажать кнопку «Перезагрузить все проекты Maven» в Вкладка Maven моей IntelliJ IDEA, потому что по какой-то причине я не получил эффект мгновенно при добавлении упомянутых зависимостей   -  person Oleg Sandro    schedule 30.03.2021
comment
Что касается проблемы IntelliJ, есть также параметр для включения автоматического импорта, когда вы вносите какие-либо изменения в свой pom.xml. Найти его можно в Настройках -> Сборка, Выполнение, Развертывание -> Инструмент сборки, а затем включить галочку Перезагружать проект после изменений в скрипте сборки и поставить галочку Любые изменения.   -  person dunni    schedule 30.03.2021
comment
@dunni Спасибо! Хорошая рекомендация. я буду использовать это   -  person Oleg Sandro    schedule 31.03.2021


Ответы (2)


Сам Lombok не имеет никаких зависимостей относительно фреймворков журналов и т. д. Вам нужно добавить зависимости каркаса журналов самостоятельно.

Например. в вашем случае добавьте следующую зависимость, она принесет SLF4J, а также Logback в качестве реализации ведения журнала:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
</dependency>
person dunni    schedule 30.03.2021
comment
У меня такая же проблема. Я добавил эту зависимость (с помощью Gradle), но, похоже, она не работает. - person Pawan; 27.04.2021

У меня все было на месте. Сборка работала, и я смог запустить приложение без каких-либо ошибок компиляции. Просто IDE жаловалась.

В моем случае мне пришлось аннулировать кеши.

Перейдите в Файл › Недействительные кеши (выберите Очистить кеши файловой системы и локальную историю) › Недействительные и перезапустить.

Надеюсь, это сработает.

person Pawan    schedule 27.04.2021