middle
Что такое Logback и чем он лучше Log4j?
Logback — фреймворк логирования, созданный автором Log4j (Ceki Gulcu) как его преемник. Является нативной реализацией SLF4J и используется по умолчанию в Spring Boot.
Структура Logback
| Модуль | Назначение |
|---|---|
| logback-core | Базовый модуль |
| logback-classic | Реализация SLF4J API (основной модуль) |
| logback-access | Интеграция с Servlet-контейнерами для HTTP access логов |
Logback vs Log4j 1.x
| Критерий | Log4j 1.x | Logback |
|---|---|---|
| Производительность | Медленнее | В 10 раз быстрее на критических путях |
| SLF4J | Через адаптер | Нативная реализация |
| Автоматическая перезагрузка конфига | Нет | Да, без потери событий |
Условная конфигурация (<if>) |
Нет | Да |
| Фильтры | Базовые | Мощные (TurboFilter, EvaluatorFilter) |
| Graceful recovery | Нет | Автоматическое восстановление после ошибок I/O |
| Архивирование | Ограниченное | Автоматическое сжатие, удаление старых логов |
| Статус в 2026 | EOL с 2015, не использовать | Стандарт (Spring Boot default) |
Log4j 1.x End-of-Life с 2015 года. Log4j 2.x — отдельный проект, современная альтернатива Logback. Оба варианта (Logback и Log4j 2.x) актуальны.
Базовая конфигурация logback.xml
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>logs/app.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>30</maxHistory>
<totalSizeCap>3GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{ISO8601} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="com.example" level="DEBUG"/>
<logger name="org.hibernate.SQL" level="DEBUG"/>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
Ключевые элементы конфигурации
%logger{36}— имя логгера, обрезанное до 36 символов- Rolling policy — обязательна для production: ротация по размеру и времени, автоматическое сжатие
totalSizeCap— общий лимит дискового пространства для всех архивовmaxHistory— сколько дней хранить ротированные файлы
Частые ошибки
- Логирование в файл без ротации — диск заполняется, приложение падает
- Не указать
totalSizeCap— старые логи никогда не удаляются - Использовать Log4j 1.x в новых проектах — EOL, уязвимости не исправляются
Как используется в 2026
- Logback — стандарт в Spring Boot экосистеме
- Log4j 2.x — альтернатива, особенно для проектов с async logging (LMAX Disruptor)
- В Kubernetes логирование в stdout предпочтительнее файлов — Logback ConsoleAppender
На собеседовании: важно не путать Log4j 1.x и Log4j 2.x — это разные проекты. Logback vs Log4j 2.x — оба актуальны; Logback выбирают за Spring Boot default, Log4j 2.x — за async logging на LMAX Disruptor.