Gymterview
junior

Какие существуют фреймворки логирования в Java?

В экосистеме Java исторически сложилось несколько фреймворков логирования, которые делятся на фасады (API) и реализации.

Эволюция логирования в Java

Год Фреймворк Тип Описание Статус в 2026
2001 Log4j 1.x Реализация Первый популярный фреймворк EOL с 2015, не использовать
2002 java.util.logging (JUL) Реализация Встроен в JDK Legacy, мелкие утилиты
2004 Commons Logging (JCL) Фасад Фасад от Apache Legacy, заменён SLF4J
2005 SLF4J Фасад Современный фасад Стандарт де-факто
2006 Logback Реализация Нативная реализация SLF4J Стандарт (Spring Boot default)
2014 Log4j 2.x Реализация Полная переработка Log4j Актуален, async через LMAX Disruptor

Что использовать в 2026

Пример
Рекомендуемый стек: SLF4J API + Logback (Spring Boot по умолчанию)
Альтернатива:       SLF4J API + Log4j 2.x (для высоконагруженных систем с async logging)

SLF4J — всегда API, конкретный фреймворк — деталь реализации.

Log4j 2.x vs Logback

Критерий Logback Log4j 2.x
Async logging AsyncAppender (BlockingQueue) LMAX Disruptor (lock-free, быстрее)
API SLF4J (нативно) Свой + SLF4J bridge
Spring Boot По умолчанию Через starter-log4j2
Lambda support Нет Да: log.debug(() -> expensiveOp())
GraalVM Native Image Ограниченная совместимость Поддерживается лучше

Частые ошибки

  • Путать Log4j 1.x и Log4j 2.x — это разные проекты с разными API и зависимостями
  • Использовать Log4j 1.x — EOL, без обновлений безопасности
  • Прямой импорт Logback API — используйте SLF4J для переносимости
  • Уязвимость Log4Shell (CVE-2021-44228) была в Log4j 2.x (исправлена в 2.17+), не в Logback

Как используется в 2026

  • 90%+ Spring Boot проектов — SLF4J + Logback (дефолт)
  • Высоконагруженные системы — рассматривают Log4j 2.x с Async Loggers
  • GraalVM Native Image — Log4j 2.x или JUL (Logback не полностью совместим из коробки)

На собеседовании: покажите знание эволюции: Log4j 1.x (EOL) -> SLF4J + Logback (стандарт) -> Log4j 2.x (альтернатива для async). Частая ошибка — путать Log4j 1.x и Log4j 2.x или не знать про Log4Shell.