有个需要日志记录http请求和响应的需求,通过一个logFilter来实现
一、入参打印
JSON.toJSONString(servletRequest.getParameterMap()));
二、出参打印
ServletResponse中将输出流,直接获取流并不能获取流中的数据,只可以改写响应流,替换响应内容;
所以需要重写ServletResponse来保存传到输出流的内容;
com.github.isrsal.logging.ResponseWrapper 则实现了这个需求,将输出流的内容保存在了字节数组缓冲区;
需要引入的依赖:
com.github.isrsal
spring-mvc-logger
0.2
log4j
log4j
javax.servlet
servlet-api
org.slf4j
slf4j-log4j12
获取出参的方法:
ResponseWrapper responseWrapper = new ResponseWrapper(Thread.currentThread().getId(), (HttpServletResponse) servletResponse);
filterChain.doFilter(servletRequest, responseWrapper);
String str = new String(responseWrapper.toByteArray(), responseWrapper.getCharacterEncoding());
三、完整的出入参打印
importcom.alibab