编辑 ApiOperationLogAspect 日志切面类,在 doAround() 方法中处理请求开始的时候, 将请求的跟踪标识放入MDC 中:

// traceId 表示跟踪 ID, 值这里直接用的 UUID
MDC.put("traceId", UUID.randomUUID().toString());

自定义注解,实现 API 请求日志切面中的代码已经添加了。

在请求结束时,为了避免污染其他请求,还需要清除 MDC 中的值:

finally {
	MDC.clear();
}

logback-weblog.xml 配置文件中,可以使用 %X 来引用MDC中的值。例如,要引用上述的 traceId,你可以这样配置:

<property name="FILE_LOG_PATTERN" value="[TraceId: %X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/>

并且设置只有生产环境 prod 时才会添加该日志,我们还使用之前的日志配置,然后暂时修改一下file的存放地址来看看能不能生效。

<property name="LOG_FILE" value="D:\\IDEA_Projects\\weblog\\logs\\${appName}.%d{yyyy-MM-dd}"/>