Использование логгирования в программе

Сложность: medium Тема: CON
logging slf4j логирование отладка аудит

Контекст задачи

Когда программа работает в продакшене или при отладке сложных сценариев, метод System.out.println() становится бесполезным: нет фильтрации, нет уровней важности, нет возможности отключить вывод. Профессиональное логгирование позволяет классифицировать сообщения по уровням (DEBUG, INFO, WARN, ERROR), направлять вывод в разные источники (файл, консоль, удалённый сервер) и гибко управлять им без изменения кода.

Формулировка

Настройте интеграцию фреймворка логирования (SLF4J + реализация) в ваш проект и добавьте логирование в ключевые методы программы. Настройте уровни логирования и продемонстрируйте каждый уровень на практике.

Ожидаемый результат

  • Подключённая библиотека логирования (SLF4J + Logback / Log4j2 / java.util.logging)
  • Экземпляр логгера в каждом классе, где требуется трассировка
  • Использование всех уровней логирования (DEBUG, INFO, WARN, ERROR)
  • Конфигурационный файл логирования (например, logback.xml)
  • Логи выводятся в файл и/или консоль с форматированием

Инструментарий

Методы и подходы:

  • Принцип разделения: фасад (SLF4J) + реализация (Logback / Log4j2)
  • Уровни логирования и их назначение
  • Форматирование вывода (timestamp, level, logger name, message)
  • Конфигурация через XML / properties
  • Логирование исключений с полным стеком (logger.error("msg", exception))

Инструменты:

  • SLF4J API + Logback (рекомендуется для Java)
  • logback.xml — файл конфигурации
  • Maven / Gradle для управления зависимостями
  • IDE: настройка отображения логов

Навигатор

  • [О логгировании — примеры и задания]
  • [Варианты индивидуальных заданий]
  • Вопрос: Какие события в вашей программе нужно логировать на уровне DEBUG, а какие — на уровне ERROR? Где ошибки критичны, а где достаточно информационного уведомления?
  • Пример задачи: Создайте логгирование запросов к БД в вашем приложении (Менеджер задач).

📝 Критерии оценки

  • Библиотека логирования подключена и работает
  • В каждом значимом классе создан экземпляр логгера
  • Использованы все уровни: DEBUG, INFO, WARN, ERROR
  • Конфигурационный файл (logback.xml) определяет формат и источник вывода
  • Исключения логируются со стеком вызовов
  • Лог-файл формируется и содержит осмысленные записи
  • Уровни логирования обоснованы (не все сообщения уровня ERROR)