Spring cloud 春云侦探+;log4j2

Spring cloud 春云侦探+;log4j2,spring-cloud,spring-cloud-netflix,spring-cloud-sleuth,Spring Cloud,Spring Cloud Netflix,Spring Cloud Sleuth,我的一些微服务使用log4j2作为记录器。springcloudsleuth支持logback。在这种情况下,如何使用Sleuth获取分布式跟踪。我知道要在log4j2中使用sleuth,我必须实现某些类。我试过了,但运气不好。 请提供帮助请试用我们内部使用的最新2.0.0.M6版本。您可以查看模块如何正确设置日志机制 在Spring Cloud Sleuth中,只需创建如下bean: @Bean CurrentTraceContext log4jTraceContext() { return

我的一些微服务使用log4j2作为记录器。springcloudsleuth支持logback。在这种情况下,如何使用Sleuth获取分布式跟踪。我知道要在log4j2中使用sleuth,我必须实现某些类。我试过了,但运气不好。
请提供帮助

请试用我们内部使用的最新2.0.0.M6版本。您可以查看模块如何正确设置日志机制

在Spring Cloud Sleuth中,只需创建如下bean:

@Bean
CurrentTraceContext log4jTraceContext() {
return MDCCurrentTraceContext.create();
}

这是我的示例log4j2配置,它记录JSON,包括Sleuth的
spanId
traceId

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
    <Appenders>
        <Console name="ConsoleJson" target="SYSTEM_OUT" follow="true">
            <JsonLayout complete="false" compact="true" eventEol="true" properties="true"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="ConsoleJson"/>
        </Root>
    </Loggers>
</Configuration>

:

性质

布尔值

如果为true,则appender包含线程上下文 在生成的JSON中映射。默认为false


因此,线程上下文映射是此信息的实际持有者,要在其他布局(
patternallayout
)中使用它,必须使用一些上下文映射访问键,如
%X{spanId}
Sleuth
将traceId和spanId放入
MDC
(映射的诊断上下文)

您可以使用
%X
检查MDC键值对,与搜索相关的键值为
traceId
spanId
parentId
spanExportable

要模拟logback默认样式,只需将下面的代码片段添加到您的
模式布局中即可:

[${APP_NAME},%X{traceId},%X{spanId},%X{spanExportable}]

${APP_NAME}
就是你的
spring:application:NAME

我想他问的是Log4j2,而不是Log4j12I我刚才试过Log4j2。一旦您禁用了slf4j,即set
spring.sleuth.log.slf4j.enabled=false,它就会立即生效。此处的任何帮助都会遇到相同的问题。唯一可能的解决方案似乎是直接集成brave库