首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Cloud Sleuth + log4j2

Spring Cloud Sleuth + log4j2
EN

Stack Overflow用户
提问于 2018-02-14 03:34:02
回答 3查看 6.6K关注 0票数 11

我的一些微服务使用log4j2作为记录器。Spring cloud Sleuth支持logback。在这种情况下,如何使用Sleuth获取分布式跟踪。我知道要在log4j2中使用侦探,我必须实现某些类。我试过了,但是没有成功。请帮帮忙

EN

回答 3

Stack Overflow用户

发布于 2020-11-08 17:51:30

Sleuth将traceId和spanId放在MDC(映射诊断上下文)中。

您可以使用%X检查MDC键值对,与Sleuth相关的键有traceIdspanIdparentIdspanExportable

要模拟logback默认样式,只需将以下代码片段主要添加到您的PatternLayout

代码语言:javascript
复制
[${APP_NAME},%X{traceId},%X{spanId},%X{spanExportable}]

${APP_NAME}只是你的spring:application:name

票数 4
EN

Stack Overflow用户

发布于 2018-02-14 03:38:09

请尝试使用最新的2.0.0.M6版本,我们在内部使用Brave。您可以查看https://github.com/openzipkin/brave/tree/master/context/log4j12模块如何正确设置日志记录机制。

在Spring Cloud Sleuth中,只需像这样创建一个bean:

代码语言:javascript
复制
@Bean
CurrentTraceContext log4jTraceContext() {
return MDCCurrentTraceContext.create();
}
票数 0
EN

Stack Overflow用户

发布于 2018-10-13 14:45:56

这是我的示例log4j2配置,用于登录JSON,包括Sleuth的spanIdtraceId

代码语言:javascript
复制
<?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>

据the log4j2 Layouts documentation报道:

属性

布尔值

如果为true,则附加器将线程上下文映射包括在生成的JSON中。默认为false。

因此,线程上下文映射是此信息的实际持有者,要在其他布局(PatternLayout)中使用它,您必须使用一些上下文映射访问键,如%X{spanId}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48774345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档