From 7991707445ac96a53cbecacb75feabd26b26aa8d Mon Sep 17 00:00:00 2001 From: RenKaiGe-Office Date: Fri, 8 Jun 2018 15:42:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8loginterceptor=E6=8B=A6=E6=88=AA?= =?UTF-8?q?=E5=99=A8=E9=87=8C=E9=9D=A2=E6=B7=BB=E5=8A=A0=E8=8E=B7=E5=8F=96?= =?UTF-8?q?post=E6=88=96=E8=80=85put=E7=AD=89=E8=AF=B7=E6=B1=82=E7=9A=84?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/nis/interceptor/LogInterceptor.java | 106 ++++++++++++------ 1 file changed, 73 insertions(+), 33 deletions(-) diff --git a/src/main/java/com/nis/interceptor/LogInterceptor.java b/src/main/java/com/nis/interceptor/LogInterceptor.java index c490c83..405e721 100644 --- a/src/main/java/com/nis/interceptor/LogInterceptor.java +++ b/src/main/java/com/nis/interceptor/LogInterceptor.java @@ -1,7 +1,15 @@ package com.nis.interceptor; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.Charset; import java.text.SimpleDateFormat; +import java.util.Enumeration; +import java.util.Map; +import javax.servlet.ServletInputStream; +import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -13,62 +21,94 @@ import com.nis.util.DateUtils; import com.nis.util.LogUtils; import com.nis.web.service.BaseService; -public class LogInterceptor extends BaseService implements HandlerInterceptor{ - - private static final ThreadLocal timeThreadLocal = - new NamedThreadLocal("ThreadLocal StartTime"); - +public class LogInterceptor extends BaseService implements HandlerInterceptor { + + private static final ThreadLocal timeThreadLocal = new NamedThreadLocal("ThreadLocal StartTime"); + + /** + * 获取非get请求的参数 + * @param request + * @return + */ + private static String getBodyString(ServletRequest request) { + ServletInputStream inputStream = null; + StringBuffer sb = new StringBuffer(); + BufferedReader reader = null; + try { + inputStream = request.getInputStream(); + reader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName("UTF-8"))); + String line = ""; + while ((line = reader.readLine()) != null) { + sb.append(line); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (reader != null) { + try { + reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return sb.toString(); + } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - long beginTime = System.currentTimeMillis();//1、开始时间 - timeThreadLocal.set(beginTime); //线程绑定变量(该数据只有当前请求的线程可见) - if (logger.isDebugEnabled()){ - logger.debug("开始计时: {} URI: {}", new SimpleDateFormat("hh:mm:ss.SSS") - .format(beginTime), request.getRequestURI()); + String requestURI = request.getRequestURI(); + logger.info("请求路径是:" + requestURI); + logger.info("请求参数是:" + getBodyString(request)); + long beginTime = System.currentTimeMillis();// 1、开始时间 + timeThreadLocal.set(beginTime); // 线程绑定变量(该数据只有当前请求的线程可见) + if (logger.isDebugEnabled()) { + logger.debug("开始计时: {} URI: {}", new SimpleDateFormat("hh:mm:ss.SSS").format(beginTime), + request.getRequestURI()); } - - + return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { - if (modelAndView != null){ + if (modelAndView != null) { logger.info("ViewName: " + modelAndView.getViewName()); } - } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { - long beginTime = timeThreadLocal.get();//得到线程绑定的局部变量(开始时间) - long endTime = System.currentTimeMillis(); //2、结束时间 - + long beginTime = timeThreadLocal.get();// 得到线程绑定的局部变量(开始时间) + long endTime = System.currentTimeMillis(); // 2、结束时间 + long consumerTime = endTime - beginTime; - + // 打印JVM信息。 - if (logger.isDebugEnabled()){ - - Object[] params = new Object[]{ - new SimpleDateFormat("hh:mm:ss.SSS").format(endTime) - , DateUtils.formatDateTime(consumerTime) - ,request.getRequestURI() - ,Runtime.getRuntime().maxMemory()/1024/1024 - ,Runtime.getRuntime().totalMemory()/1024/1024 - ,Runtime.getRuntime().freeMemory()/1024/1024 - ,(Runtime.getRuntime().maxMemory()-Runtime.getRuntime().totalMemory()+Runtime.getRuntime().freeMemory())/1024/1024}; - logger.debug("计时结束:{} 耗时:{} URI: {} 最大内存: {}m 已分配内存: {}m 已分配内存中的剩余空间: {}m 最大可用内存: {}m",params); - + if (logger.isDebugEnabled()) { + + Object[] params = new Object[] { new SimpleDateFormat("hh:mm:ss.SSS").format(endTime), + DateUtils.formatDateTime(consumerTime), request.getRequestURI(), + Runtime.getRuntime().maxMemory() / 1024 / 1024, Runtime.getRuntime().totalMemory() / 1024 / 1024, + Runtime.getRuntime().freeMemory() / 1024 / 1024, (Runtime.getRuntime().maxMemory() + - Runtime.getRuntime().totalMemory() + Runtime.getRuntime().freeMemory()) / 1024 / 1024 }; + logger.debug("计时结束:{} 耗时:{} URI: {} 最大内存: {}m 已分配内存: {}m 已分配内存中的剩余空间: {}m 最大可用内存: {}m", params); + } - + // 保存日志 LogUtils.saveLog(request, handler, ex, null, consumerTime); - - + } }