gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:27:05 25 4
gpt4 key购买 nike

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

我已经写了 公共(public)类 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);
}
}

关于java - 如何在基于 Spring 的 Java 应用程序中的每个请求中添加唯一的 UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36676974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com