1. 参考文章:https://segmentfault.com/a/1190000022721682,https://blog.youkuaiyun.com/millery22/article/details/86672354
2. 开始使用了TreadLocal和拦截器增加标识,但是发现想中消费mq消息的日志,无法打印唯一标识。文章:https://blog.youkuaiyun.com/whxwkb/article/details/111594712。查询到MDC可以。
3. 拦截器:
public class LogInterceptor implements HandlerInterceptor {
public final static String REQUEST_ID = "requestId";
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
try{
String uuid = UUID.randomUUID().toString().replace("-", "");
MDC.put(REQUEST_ID, uuid);
} catch (Exception e) {
// 捕捉异常,不可阻断流程,无需做任何处理
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
//移除id
MDC.remove(REQUEST_ID);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
拦截器配置:
@Configuration
public class WebInterceptorConfig extends WebMvcConfigurationSupport {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LogInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/user/login")
.excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html

本文介绍了如何结合MDC(Mapped Diagnostic Context)、AOP切面和拦截器来为日志添加跟踪标识。在解决MQ消息日志跟踪问题中,发现TreadLocal和拦截器无法满足需求,转而使用MDC。文中提到了参考文章,并详细说明了拦截器的配置、AOP的设置以及logback.xml的日志格式配置,确保跟踪ID能正确打印。
最低0.47元/天 解锁文章
1282

被折叠的 条评论
为什么被折叠?



