【发布时间】:2018-11-29 18:51:26
【问题描述】:
我使用Spring boot 并有一些REST 控制器。我想记录所有请求和响应。我使用外部 tomacat,没有嵌入!我写Interceptor:
@Component
@Log4j2
public class LoggingWebMvcInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
final ContentCachingRequestWrapper wrapper = new ContentCachingRequestWrapper(request);
log.debug("REQ!!!! {}", wrapper.getReader().lines().collect(Collectors.joining(System.lineSeparator())));
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
//log.debug("Response: {}", response);
}
并添加他的:
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
private final LoggingWebMvcInterceptor loggingWebMvcInterceptor;
@Autowired
public WebMvcConfig(LoggingWebMvcInterceptor loggingWebMvcInterceptor) {
this.loggingWebMvcInterceptor = loggingWebMvcInterceptor;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loggingWebMvcInterceptor);
}
}
但它不起作用!
当我尝试POST 请求时,他的日志记录,但我有错误:"Required request body is missing。
我做错了什么?我为请求创建了一个包装器! 我需要用标题和正文以及所有响应完全记录所有请求(POST、GET、DELETE、PUT)。我怎样才能做到这一点?请帮忙。
【问题讨论】:
-
能否请您发布您的控制器类!
-
请包含您发送的请求数据,并说明您是在请求日志拦截器不工作的帮助,还是发布请求不工作
标签: spring spring-boot tomcat