Gymterview
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.