Spring boot 结构化Stackdriver日志-将MDC添加到日志

Spring boot 结构化Stackdriver日志-将MDC添加到日志,spring-boot,google-cloud-platform,google-cloud-stackdriver,spring-cloud-gcp,Spring Boot,Google Cloud Platform,Google Cloud Stackdriver,Spring Cloud Gcp,将MDC添加到日志中,以便能够在Stackdriver仪表板和日志控制台中跟踪特定的错误日志。当前的实现在本地机器上运行良好,但在云上则不然——只是不包括我的MDC日志条目。问题是我根本不知道什么可能是问题 本地日志输出(包含“contextKey”:“someValue”): 同一服务的Kubernetes容器日志(无“contextKey”:“someValue”在此日志条目中): My logback.xml: <configuration> <appender

将MDC添加到日志中,以便能够在Stackdriver仪表板和日志控制台中跟踪特定的错误日志。当前的实现在本地机器上运行良好,但在云上则不然——只是不包括我的MDC日志条目。问题是我根本不知道什么可能是问题

本地日志输出(包含“contextKey”:“someValue”):

同一服务的Kubernetes容器日志(无“contextKey”:“someValue”在此日志条目中):

My logback.xml:

<configuration>

    <appender name="CONSOLE_JSON" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.springframework.cloud.gcp.autoconfigure.logging.StackdriverJsonLayout">
                <projectId>${projectId}</projectId>
            </layout>
        </encoder>
    </appender>

    <springProfile name="local,dev,test">
        <root level="INFO">
            <appender-ref ref="CONSOLE_JSON"/>
        </root>
    </springProfile>
</configuration>

MDC字段应该在日志实体的“标签”节点上可用。你查过了吗

此外,在日志查看器的谷歌控制台上,设置要在日志记录中显示的MDC字段也很不错。对于该设置“labels.YouCustomMDCField:at View Options->Modify custom fields”(在屏幕右上方)

更新:但是,您使用的方法与我不同,我使用的是


${log\u file\u name}
这是做的诀窍(我也有春天)

{"traceId":"8d7287fa0ebdacfce9b88097e290ecbf","spanId":"96967afbe05dbf0e","spanExportable":"false","X-B3-ParentSpanId":"224dcb9869488858","parentId":"224dcb9869488858","timestampSeconds":1552312549,"timestampNanos":752000000,"severity":"ERROR","thread":"reactor-http-epoll-2","logger":"com.example.someservice.controller.MyController","message":"Something went wrong","context":"default","logging.googleapis.com/trace":"projects/my-project/traces/8d7287fa0ebdacfce9b88097e290ecbf","logging.googleapis.com/spanId":"96967afbe05dbf0e"}
<configuration>

    <appender name="CONSOLE_JSON" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.springframework.cloud.gcp.autoconfigure.logging.StackdriverJsonLayout">
                <projectId>${projectId}</projectId>
            </layout>
        </encoder>
    </appender>

    <springProfile name="local,dev,test">
        <root level="INFO">
            <appender-ref ref="CONSOLE_JSON"/>
        </root>
    </springProfile>
</configuration>
@RestController
@RequestMapping("v1/my-way")
@Slf4j
public class MyController {

    @GetMapping
    public void read() {
        MDC.put("contextKey", "someValue");
        log.error("Something went wrong");
        MDC.remove("contextKey")
    }

}