Эта статья направлена на помощь разработчикам в интеграции методов получения TraceID и добавления TraceID в логи приложения в коде приложения, подходящей для разработчиков бэкенда с некоторым опытом разработки.
Чтобы правильно ассоциировать несколько автоматически отправленных спанов (разные модули/узлы/сервисы, вызванные в рамках одного запроса) в единый трейс, HTTP-заголовки запроса сервиса будут включать TraceID и другую информацию, используемую для ассоциации трассировки.
Трасса представляет собой процесс вызова одного запроса, а TraceID — это уникальный идентификатор, идентифицирующий этот запрос. С TraceID в логах можно ассоциировать трассировку с логами приложения.
Основываясь на вышеуказанных предпосылках, в этой статье объясняется, как получить TraceID из заголовков HTTP-запроса и добавить его в логи приложения, что позволит вам точно запрашивать данные логов на платформе с использованием TraceID.
Следующие примеры основаны на фреймворке Spring Boot и используют Log4j и Logback для иллюстрации.
Ваше приложение должно соответствовать следующим предварительным условиям:
Тип и версия библиотеки логирования должны соответствовать следующим требованиям:
Библиотека логирования | Требование к версии |
---|---|
Log4j 1 | 1.2+ |
Log4j 2 | 2.7+ |
Logback | 1.0+ |
Приложение было проинъектировано с помощью Java Agent.
Метод 1: Настройка logging.pattern.level
Измените параметр logging.pattern.level
в конфигурации вашего приложения следующим образом:
Метод 2: Настройка CONSOLE_LOG_PATTERN
Измените файл конфигурации logback следующим образом.
Консольный вывод используется здесь в качестве примера, где %X{trace_id}
указывает на значение ключа trace_id
, извлеченное из MDC.
В классе, где нужно выводить логи, добавьте аннотацию @Slf4j
и используйте объект логирования для вывода логов, как показано ниже:
В коде приложения добавьте следующий код для получения TraceID из заголовков запроса. Пример кода приведен ниже и может быть скорректирован по мере необходимости:
Функция getForwardHeaders извлекает информацию о трассировке из заголовков запроса, где значение x-b3-traceid
является TraceID.
В коде приложения добавьте следующий код для включения полученного TraceID в логи. Пример кода приведен ниже и может быть скорректирован по мере необходимости:
Нажмите на Трассировка в левой панели навигации.
В критериях запроса выберите TraceID, введите TraceID для запроса и нажмите Добавить в запрос.
В отображаемых данных трассировки ниже нажмите Просмотреть лог рядом с TraceID.
На странице Запрос лога отметьте Содержит Trace ID; система будет отображать только данные логов, содержащие TraceID.