Spring 引导应用程序发出的日志中的一组值是什么意思?

What is the meaning of set of values in log emitted by Spring Boot application?

我正在使用 spring 启动来创建微服务。 生成的日志之一是:

2019-06-19 09:31:05.875 INFO [tkc,37b5f215d418d0ff,d5501f25ae8599bf,false] 13 --- [ntainer#0-1-C-1] a.b.c.d.sample.ClassName : This is log message

在此日志中,我无法理解以下值的含义:[tkc,37b5f215d418d0ff,d5501f25ae8599bf,false]

我在DefaultLogbackConfiguration.java中看到的日志模式是

private static final String FILE_LOG_PATTERN = "%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}

${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}";

我无法理解 ${LOG_LEVEL_PATTERN:-%5p} 是如何翻译成 INFO[tkc,37b5f215d418d0ff,d5501f25ae8599bf,false] 的?

您可能使用了 Spring Cloud Sleuth 日志关联。由于你记录了不止一个微服务的运行,所以需要区分日志来自于哪个微服务。

查看文档 1.2.4 Log correlation where the first sample appears and understand its description is at the part a bit below at 3. Features:

notice the [appname,traceId,spanId,exportable] entries from the MDC:

  • spanId - 发生的特定操作的id

  • appname - 记录跨度的应用程序名称

  • traceId - 包含 span

  • 的延迟图的 ID
  • exportable - 是否应该将日志导出到 Zipkin。您希望 span 何时不可导出?如果您想将一些操作包装在 Span 中并仅将其写入日志。

解密[tkc,37b5f215d418d0ff,d5501f25ae8599bf,false]:

  • tkc是微服务的名字
  • 37b5f215d418d0ff 是traceId
  • d5501f25ae8599bf是spanId
  • false日志没有导出到Zipkin