Вернуться к статьям

Spring Boot и JSON-логирование: добавляем пользователя и сессию без боли

8 мая 2026
2 мин чтения
Spring Boot и JSON-логирование: добавляем пользователя и сессию без боли

Разбираемся, как прикрутить к логам Spring Boot данные о пользователе и сессии — и не сойти с ума от парсинга.

Логи — это как чёрный ящик самолёта: пока всё хорошо, ты про них не вспоминаешь, а когда баг на проде — копаешься в сотнях строк в поисках иголки. Spring Boot по умолчанию пишет логи в текстовом формате, что удобно для чтения человеком, но ад для машинного анализа.

JSON-логирование: спасательный круг для разработчика

Переход на JSON-формат — это как заменить мятую бумажку с пометками на структурированную таблицу. В видео показывают, как настроить Logback или Log4j2, чтобы логи превратились в аккуратные JSON-объекты с полями: timestamp, level, message, и, самое главное, — user и session.

Зачем это нужно? Представьте: на проде пользователь жалуется, что у него что-то сломалось. Вы лезете в логи, но видите только кучу одинаковых сообщений от разных юзеров. Без контекста — гадай на кофейной гуще. А если в каждом логе есть userId и sessionId, вы за секунду фильтруете по нужному пользователю и видите всю цепочку его действий. Магия, да и только.

Как добавить пользователя и сессию в логи?

Самый простой способ — использовать MDC (Mapped Diagnostic Context). Это такой карман в логирующем фреймворке, куда можно положить любые данные, и они автоматически попадут в каждый лог из текущего потока. В Spring Boot это делается через фильтр или интерцептор:

  1. Создаёте фильтр, который перед обработкой запроса кладёт в MDC userId и sessionId из SecurityContext или HTTP-сессии.
  2. Настраиваете layout логгера на JSON-формат, указав, что нужно вытаскивать эти поля из MDC.
  3. Готово — каждый лог теперь содержит контекст.

Кстати, не забудьте очищать MDC после запроса, иначе данные утекут в соседний поток — будет весёлый баг, когда один пользователь видит логи другого.

Комментарий студии METABYTE: Мы тоже не раз обжигались на текстовых логах, пока не внедрили JSON-формат. Теперь поиск багов стал похож на игру «найди кота» — только кота вы точно найдёте, а не будете гадать, есть ли он вообще.

Spring Boot JSON логирование пользователя и сессии | METABYTE — METABYTE