Протоколирование HTTP-запросов и ответов

Ведение журнала является фундаментальным аспектом разработки программного обеспечения. Он предоставляет разработчикам информацию о том, как ведут себя их приложения, помогает отлаживать проблемы и контролирует состояние системы. Zalando, один из крупнейших в Европе интернет-магазинов модной одежды, разработал библиотеку журналов с открытым исходным кодом под названием «Logbook».

В этой статье мы углубимся в журнал Zalando, изучим его функции и предоставим примеры кода, которые помогут разработчикам реализовать эффективное ведение журналов в своих приложениях.

Что такое бортовой журнал?

Logbook — это расширяемая библиотека Java, позволяющая осуществлять полное ведение журнала запросов и ответов для различных клиентских и серверных технологий. Он удовлетворяет особые потребности,
а) позволяя разработчикам веб-приложений регистрировать любой HTTP-трафик, который приложение получает или отправляет
б) таким образом, чтобы его можно было легко сохранить и проанализировать позже.
Это может быть полезно для традиционного анализа журналов, выполнения требований аудита или исследования отдельных исторических проблем с трафиком. - "источник"

Вот некоторые из его ключевых особенностей:

  1. Структурированное ведение журнала. Журнал поддерживает структурированное ведение журнала, позволяя разработчикам прикреплять пары ключ-значение (контекстную информацию) к сообщениям журнала. Это упрощает поиск, фильтрацию и анализ данных журнала.
  2. Журналирование запросов и ответов. Журнал предназначен для веб-приложений, что позволяет легко регистрировать детали HTTP-запросов и ответов, включая заголовки и основное содержимое.
  3. Поддержка потоковой передачи. Журнал поддерживает различные потоки вывода, такие как файлы, стандартный вывод (stdout) и стандартный вывод ошибок (stderr). Вы можете настроить несколько обработчиков для отправки журналов в разные места назначения.
  4. Расширяемость. Разработчики могут расширять функциональность журнала, создавая собственные обработчики и форматировщики журналов, что позволяет интегрироваться с различными службами и форматами журналов.

Базовая настройка в приложении весенней загрузки

Зависимость для включения в файл pom.xml или gradle.build.

<dependency>
    <groupId>org.zalando</groupId>
    <artifactId>logbook-spring-boot-starter</artifactId>…