В этой статье разработчикам будет показано, как интегрировать методы получения TraceID и добавления TraceID в логи приложения в код приложения, что подходит для backend-разработчиков с некоторым опытом разработки.
Для корректного объединения нескольких автоматически отправляемых спанов (разных модулей/узлов/сервисов, вызываемых в рамках одного запроса) в один трейс, в HTTP-заголовках запроса сервиса передаются TraceID и другая информация, используемая для связывания трейса.
Трейс представляет собой процесс вызова одного запроса, а TraceID — уникальный идентификатор, определяющий этот запрос. Наличие TraceID в логах позволяет связать трассировку с логами приложения.
Исходя из вышеизложенного, в этой статье будет объяснено, как получить TraceID из HTTP-заголовков запроса и добавить его в логи приложения, что позволит точно выполнять поиск логов на платформе по TraceID.
Приведённые примеры основаны на фреймворке Spring Boot и используют Log4j и Logback для иллюстрации.
Ваше приложение должно соответствовать следующим требованиям:
Тип и версия библиотеки логирования должны соответствовать следующим требованиям:
Logging Library | Требования к версии |
---|---|
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
и используйте объект log для вывода логов, как показано ниже:
В коде приложения добавьте следующий код для получения TraceID из заголовков запроса. Пример кода приведён ниже и может быть адаптирован по необходимости:
Функция getForwardHeaders извлекает информацию о трассировке из заголовков запроса, где значение x-b3-traceid
является TraceID.
В коде приложения добавьте следующий код для включения полученного TraceID в логи. Пример кода приведён ниже и может быть адаптирован по необходимости:
Нажмите на Tracing в левой навигационной панели.
В критериях запроса выберите TraceID, введите TraceID для поиска и нажмите Add to query.
В отображённых ниже данных трейса нажмите View Log рядом с TraceID.
На странице Log Query отметьте Contain Trace ID; система отобразит только логи, содержащие TraceID.