在log4j2 patternlayout中使用Sleuth跟踪和跨度ID

时间:2019-09-26 14:31:35

标签: java spring log4j2 spring-cloud-sleuth

我想将侦探与log4j2一起使用。因此,我使用了.properties配置。问题是我无法通过我的patternlayout将sleuth参数获取到日志中。 您能告诉我使用哪种模式获取搜索参数。就我而言,它们总是空的。

我做了什么: 像提到的here [%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}中使用时,输出为null。

更新: %X {X-B3_TraceId}有效。我的异步日志记录工作流程遇到了问题。

1 个答案:

答案 0 :(得分:1)

尝试使用此模式:

 <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}"/>