当前位置: 首页 > 知识库问答 >
问题:

记录当前Span上下文中Spring Cloud Sleuth Baggage的值

金令
2023-03-14

我有一个使用Spring Cloud Sleuth的Spring Boot应用程序(版本2.1.3.RELEASE),我想在当前Span上下文中记录行李的值。我正在使用Logback。

我的记录器具有此logback配置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
                %date{ISO8601} %highlight(%-5level) %magenta(%thread) %cyan(%logger) %message %X{X-B3-TraceId} %X{X-B3-SpanId} %X{foo}%n
            </pattern>
        </encoder>
    </appender>
    <root level="info">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

在我的控制器中,我试图在当前Span上下文中设置一个baggage:

Span currentSpan = this.tracer.currentSpan();
ExtraFieldPropagation.set(currentSpan.context(), "foo", "bar");

在我的申请中。属性,我设置了以下属性:

spring.sleuth.propagation-keys=foo
# Set the value of the foo baggage into MDC:
spring.sleuth.log.slf4j.whitelisted-mdc-keys=foo

但是我无法记录foo的值(使用%X{foo})。结果是foo的空字符串:

My message e575e59578b92ace e575e59578b92ace 

共有1个答案

商高谊
2023-03-14

在当前范围内设置的白名单行李值写在SLF4J MDC中,位于org.springframework.cloud.sleuth.log.slf4jscopedecotor中。decorateScope(),因此如果创建了新的子跨度,您将在日志中找到baggage值。

我目前还不知道一种优雅的方法,可以在行李值设置后立即更新MDC。

我提出的唯一解决方案是在MDC中手动设置值。对你来说,这意味着

org.slf4j.MDC.put("foo", "bar");

希望这有帮助

 类似资料:
  • 问题内容: 我正在关注youtube上的教程,但是OpenGL存在我无法解决的问题。我不知道该如何解决。 主要 问题答案: 您需要调用glfwMakeContextCurrent将OpenGL上下文绑定到您的线程。LWJGL网站上也有一个工作示例。

  • 问题内容: “ java”如何知道要执行的类文件而不设置类路径。即,默认情况下它是否签入当前目录,或者我们也需要为当前目录设置类路径。 问题答案: 它首先检查当前目录。如果找不到该类,它将在类路径中搜索该类。 默认的类路径是当前目录。设置变量或使用命令行选项将覆盖默认值,因此,如果要在搜索路径中包括当前目录,则必须将其包括在新设置中。[ 来源 ]

  • 我正在写一个chrome扩展,它将改变屏幕上某些单词的颜色。我很难找到符合我需要的文本,然后准确地将它包装成一个跨度。html中的同一个单词通常会在页面的其他位置被替换,从而使链接和样式变得毫无用处。 我的示例代码如下:

  • 我在LWJGL 3中使用OpenGL,我得到以下错误; 这是RenderUtil类,initGraphics是从我的主类的构造函数中调用的。在使用GLFW创建了一个窗口后,我还尝试调用initGraphics,该窗口也生成了类似的错误消息。 另外,我没有使用多线程。要创建一个窗口,我调用方法from my main method."

  • 查看此截图: 我正在使用这段代码添加表情符号在div的跨度。 但标记后没有附加空格,这样我就可以在标记后编写下一个文本。