Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在基于Spring的Java应用程序中,如何在每个请求中添加唯一的UUID_Java_Spring_Log4j - Fatal编程技术网

在基于Spring的Java应用程序中,如何在每个请求中添加唯一的UUID

在基于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

我刚刚开始研究SpringBoot应用程序。 我想将唯一的UUID附加到每个API请求中,并将其附加到日志中

我写过 公共类RequestContextListener实现ServletRequestListener{

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,而不是拦截器,因为它在所有筛选器之前执行。