springBoot项目在日志中打印traceId,实现溯源

 1. 新创建一个拦截器

public class TraceContextFilter extends OncePerRequestFilter {

    @Override
    protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {
        try {
            // 填充数据(适用logback、log4j 1.x)
            MDC.put("traceId", UUID.randomUUID().toString().replace("-",""));
            // 填充数据(适用log4j 2.x)
            // ThreadContext.put(Contents.REQUEST_ID, UUID.randomUUID().toString());
            filterChain.doFilter(httpServletRequest, httpServletResponse);
        } finally {
            // 请求结束时清除数据,否则会造成内存泄露问题
            MDC.remove("traceId");
        }
    }
}

2. 配置拦截器

@Configuration
public class TraceFilterConfig {

    @Bean
    public FilterRegistrationBean traceContextFilterRegistrationBean() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        filterRegistrationBean.setFilter(new TraceContextFilter());
        filterRegistrationBean.addUrlPatterns("/*");
        return filterRegistrationBean;
    }
}

3. 自改日志配置文件logback.xml

<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%X{traceId}] [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />

 

4. 日志打印结果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值