在基于Spring的Java应用程序中,如何在每个请求中添加唯一的UUID
我刚刚开始研究SpringBoot应用程序。 我想将唯一的UUID附加到每个API请求中,并将其附加到日志中 我写过 公共类RequestContextListener实现ServletRequestListener{在基于Spring的Java应用程序中,如何在每个请求中添加唯一的UUID,java,spring,log4j,Java,Spring,Log4j,我刚刚开始研究SpringBoot应用程序。 我想将唯一的UUID附加到每个API请求中,并将其附加到日志中 我写过 公共类RequestContextListener实现ServletRequestListener{ private Logger logger = LoggerFactory.getLogger(getClass()); @Override public void requestInitialized(ServletRequestEvent arg0) { logge
private Logger logger = LoggerFactory.getLogger(getClass());
@Override
public void requestInitialized(ServletRequestEvent arg0) {
logger.debug("++++++++++++ REQUEST INITIALIZED +++++++++++++++++");
MDC.put("UUID", UUID.randomUUID());
}
@Override
public void requestDestroyed(ServletRequestEvent arg0) {
logger.debug("-------------REQUEST DESTROYED ------------");
MDC.clear();
}
下面是我的logback-spring.xml文件更改
<property name="CONSOLE_LOG_PATTERN" value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%rEx} [%X{UUID}]"/>
但这对我不起作用。
我有必要提到任何需要执行的地方吗?
请帮忙,我已经在这上面浪费了一天。我在我的spring boot应用程序中使用HandlerInterceptorAdapter来防止重复帖子
@Component
public class ViewInterceptor extends HandlerInterceptorAdapter {
private final Logger logger = LoggerFactory.getLogger(ViewInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
logger.info("...prehandle");
return super.preHandle(request, response, handler);
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
logger.info("...posthandle");
super.postHandle(request, response, handler, modelAndView);
}
}
我的类中缺少@Component注释。我可能会创建一个ServletRequestListener,而不是拦截器,因为它在所有筛选器之前执行。