|
@@ -0,0 +1,34 @@
|
|
|
+package com.nokia.common.mvc.interceptor;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import org.springframework.util.StopWatch;
|
|
|
+import org.springframework.web.servlet.HandlerInterceptor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+
|
|
|
+/*
|
|
|
+ * 通过拦截器给controller添加log
|
|
|
+ *
|
|
|
+ * 通过拦截器的方式如果读取response的内容,后续无法再次写入,因此这里实现计时很简单,但是实现输出返回值就比较麻烦
|
|
|
+ * 同样的,如果要获取request中的参数信息也是比较复杂的,因为一旦读取,后续的处理就无法再次读取了。
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+public class ControllerLogInterceptor implements HandlerInterceptor {
|
|
|
+
|
|
|
+ private StopWatch watch;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
|
|
|
+ log.debug("接收到请求 {} 地址", request.getRequestURL());
|
|
|
+ watch = new StopWatch();
|
|
|
+ watch.start();
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
|
|
|
+ Exception ex) {
|
|
|
+ watch.stop();
|
|
|
+ log.debug("完成请求,耗时 {} ms", watch.getLastTaskTimeMillis());
|
|
|
+ }
|
|
|
+}
|