Как настроить production-ready логирование в Spring Boot Логи | Библиотека джависта | Java, Spring, Maven, Hibernate

Как настроить production-ready логирование в Spring Boot

Логи в проде — это не просто System.out.println(). Это структурированные данные, correlation ID, асинхронная запись и ротация. Разбираем настройку от А до Я.

Выбираем стек: Logback + SLF4J

Spring Boot из коробки использует Logback. Добавляем зависимости:

net.logstash.logback
logstash-logback-encoder
7.4


ИЛИ

gradleimplementation 'net.logstash.logback:logstash-logback-encoder:7.4'

Это даст JSON-формат логов для удобного парсинга в ELK/Grafana.

Создаём logback-spring.xml

Кладём в src/main/resources:




false
true




logs/application.log

logs/application-%d{yyyy-MM-dd}.%i.log.gz
100MB
30
10GB










Логи ротируются по размеру и времени, старые архивируются в gzip.

Добавляем Correlation ID

Создаём фильтр для трекинга запросов:

@Component
public class CorrelationIdFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response,
FilterChain chain) throws ServletException, IOException {
String correlationId = request.getHeader("X-Correlation-ID");
if (correlationId == null) {
correlationId = UUID.randomUUID().toString();
}
MDC.put("correlationId", correlationId);
response.setHeader("X-Correlation-ID", correlationId);
try {
chain.doFilter(request, response);
} finally {
MDC.clear();
}
}
}

Теперь каждый лог привязан к конкретному запросу. В JSON-логе будет поле correlationId.

Настраиваем уровни логирования в application.yml

logging:
level:
root: INFO
com.yourcompany: DEBUG
org.springframework.web: WARN
org.hibernate.SQL: DEBUG
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"

Для прода root: INFO, для дебага поднимаем до DEBUG только нужные пакеты.

Асинхронная запись логов

Добавляем в logback-spring.xml:



512
0






Логи пишутся в отдельном потоке и не блокируют бизнес-логику.

Интеграция с мониторингом

Для отправки в Logstash/Fluentd добавляем TCP-аппендер:


logstash.example.com:5000



══════ Навигация ══════
Вакансии • Задачи • Собесы

Библиотека джависта

#Enterprise