Как подключить логирование в проекте на Java, собираемого через Gradle, используя фасад Slf4j

Логирование является важной составляющей любого проекта на Java. Оно позволяет отслеживать работу приложения, выявлять ошибки и упрощать отладку. В данной заметке мы рассмотрим, как подключить логирование в проекте на Java, собираемого через Gradle, используя Slf4j и Lombok.

  1. Добавление зависимости и конфигурация Для использования slf4j и логирования в файл и консоль, необходимо добавить зависимости в файл build.gradle:
dependencies {
    implementation 'org.slf4j:slf4j-api:2.0.7'
    implementation 'org.slf4j:slf4j-log4j12:2.0.7'
    implementation 'org.projectlombok:lombok:1.18.26'
}

Также необходимо в файле конфигурации application.yml добавить раздел с параметрами логирования:

logging:
  level:
    root: INFO
#    org.springframework.web: DEBUG
#    org.hibernate: ERROR
  file:
    name: ./logs/app.log
    logrotate:
      max-history: 10
      max-size: 10MB
  pattern:
    console: "%d{dd-MM-yyyy HH:mm:ss.SSS} %-5level - %msg%n"
    file: "%d{dd-MM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"

В данном примере мы настраиваем вывод логов в файл ./logs/app.log и в консоль. Файл app.log будет создан в каталоге проекта ./logs/. Также мы настраиваем максимальный размер файла и количество ротаций. Для примера, в закомментированных строчках показано, как можно индивидуально менять уровень логирования для разных пакетов. Также обратите внимание, что можно индивидуально настроить формат вывода строки сообщения в stdout и в файл.

  1. Использование логгера Для использования логгера в проекте, мы будем использовать Lombok и аннотацию @Slf4j. Для этого необходимо добавить зависимость lombok в файл build.gradle и аннотировать класс аннотацией @Slf4j:
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class MyClass {
    public static void main(String[] args) {
        log.info("Hello, World!");
    }
}

В данном примере мы создали объект логгера для класса MyClass с помощью аннотации @Slf4j. В методе main мы вызываем метод info у объекта логгера, чтобы вывести сообщение в лог.

Теперь мы можем использовать логгер в любом месте нашего приложения с помощью аннотации @Slf4j и вызова методов логгера (например, log.info("Some message")).

В заключение, мы рассмотрели, как подключить логирование в проекте на Java, используя slf4j и Lombok, и настроить его для вывода логов в файл и консоль, а также использовать конфигурацию логгера из файла application.yml. Это позволит упростить отладку приложения и быстро находить ошибки.

Иллюстрация подготовлена в Midjourney.

Эти источники были использованы для подготовки материала и предоставляют более подробную информацию о настройке логирования в проектах на Java, использовании Lombok и SLF4J, и конфигурации Log4j2.

  1. "Logging", Spring Boot Reference Documentation, https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.logging
  2. "Lombok", Project Lombok, https://projectlombok.org/
  3. "The Simple Logging Facade for Java", SLF4J, http://www.slf4j.org/
  4. "Log4j2 with SLF4J Configuration", HowToDoInJava, https://howtodoinjava.com/log4j2/log4j2-with-slf4j/
  5. "Configuring Log4j 2", Log4j 2 User's Guide, https://logging.apache.org/log4j/2.x/manual/configuration.html