本教程展示了如何使用**CommonsRequestLoggingFilter跟踪传入的HTTP请求。
追踪Spring Boot 2.x应用程序的传入HTTP请求有几种选择。最简单的选项之一是使用CommonsRequestLoggingFilter**,它可以作为一个Bean添加到任何配置类中。请看下面的例子。
package com.example.testrest;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.CommonsRequestLoggingFilter;
@Configuration
public class RequestLoggerFilter {
@Bean
public CommonsRequestLoggingFilter logFilter() {
CommonsRequestLoggingFilter filter = new CommonsRequestLoggingFilter();
filter.setIncludeQueryString(true);
filter.setIncludePayload(true);
filter.setMaxPayloadLength(10000);
filter.setIncludeHeaders(false);
filter.setAfterMessagePrefix("REQUEST DATA : ");
return filter;
}
}
你还需要在application.properties文件中为CommonsRequestLoggingFilter设置日志级别。
logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=DEBUG
或者作为一种选择,在logback.xml中。
<?xml version="1.0" encoding="UTF-8"?><logger name="org.springframework.web.filter.CommonsRequestLoggingFilter">
<level value="DEBUG"/>
</logger>
添加后,你就可以在Spring Boot控制台看到传入的请求。
2020-04-09 15:53:06.554 DEBUG 13536 --- [nio-8080-exec-1] o.s.w.f.CommonsRequestLoggingFilter : Before request [uri=/list] 2020-04-09 15:53:06.630 DEBUG 13536 --- [nio-8080-exec-1] o.s.w.f.CommonsRequestLoggingFilter : REQUEST DATA : uri=/list]
另一方面,如果你想以流的形式接收HTTP请求,你可以通过扩展HandlerInterceptorAdapter类来实现。
@Component public class CustomHandlerInterceptorAdapter extends HandlerInterceptorAdapter {
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
ServletRequest servletRequest = new ContentCachingRequestWrapper(request);
servletRequest.getParameterMap();
// Read inputStream and log it
return true;
}
}
注意,由于你要处理的是InputStreams,所以你不能读取它们两次!
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
内容来源于网络,如有侵权,请联系作者删除!