Используйте идентификатор трассировки и диапазона Sleuth в log4j2 patternlayout - PullRequest
1 голос
/ 26 сентября 2019

Я хочу использовать sleuth с log4j2.Для этого я использовал конфигурацию .properties.Проблема в том, что я не могу получить параметры Sleuth в журналы с моим patternlayout.Можете ли вы сказать мне, какой шаблон использовать для получения параметров Sleuth.В моем случае они всегда пустые.

Что я сделал: как упомянуто здесь [% X {spanId}] и установлен spring.sleuth.log.slf4j.enabled = false

Весь мой шаблон выглядит следующим образом:

date: %d{ISO8601} loglevel: %X{loglevel} [%X{spanId}] user-agent: %X{useragent} servicename: %X{servicename} class:%X{classname} method:%X{methode} Line: %L message: %m%n

Чтобы вставить данные, я использую объект ThreadContext:

ThreadContext.put("trace", logdata.getTrace());

Когда я вставляю его таким образом, я получаю, например, следующее:

NoopSpan(91406b61b7d23455/05657a824bc5c9e2)

Но я хочу разделить данные, чтобы я мог использовать их со стеком лося

РЕДАКТИРОВАТЬ: Когда я использую

System.out.prinln(MDC.get("X-B3_TraceId"))

в моемкласс контроллера я получаю правильный вывод.Но когда я использую в моем шаблоне% X {X-B3_TraceId}, результат будет нулевым.

1 Ответ

0 голосов
/ 26 сентября 2019

попробуйте с этим шаблоном:

 <property name="CONSOLE_LOG_PATTERN"
          value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/>
...