前言:因为老项目日志系统比较简单没有trace_id 来追踪调用链所以每次查日志都比较难受。
思路:logback中可以配置日志格式增加trace_id属性,通过过滤器将此属性赋值,微服务之间通过header将trace_id参数透传(feign),实现不同服务之间同一链路同一trace_id。
logback.xml:
<encoder charset="UTF-8">
<pattern>%d [%thread] %-5p [%c] [%F:%L] [trace=%X{X-Trace-Id:-},span=%X{X-Span-Id:-},parent=%X{X-Parent-Id:-},name=%X{X-Span-Name:-},app=%X{appname:-},begintime=%X{begintime:-},endtime=%X{fin-X1-time:-}] - %msg%n</pattern>
</encoder>
LogFilter.java:
@Slf4j
@WebFilter(filterName = "LogFilter", urlPatterns = "/*")
@Order(0)
@Component
public class LogFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) {
}
@Override
public void doFilter(ServletRequest servl