我刚刚开始使用spring boot应用程序。 我想为每个API请求附加唯一的UUID并将其附加到日志中。
我写过 公共类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}]"/>
但这不适合我。 我是否必须提到需要执行的任何地方? 请帮助,我已经浪费了一天。
答案 0 :(得分:1)
我在Spring启动应用程序中使用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);
}
}