diff --git a/mallinkCApi/src/main/java/com/iformall/interceptor/HttpServletRequestWrapperFilter.java b/mallinkCApi/src/main/java/com/iformall/interceptor/HttpServletRequestWrapperFilter.java index 40f12f03b..6ea1af6f0 100644 --- a/mallinkCApi/src/main/java/com/iformall/interceptor/HttpServletRequestWrapperFilter.java +++ b/mallinkCApi/src/main/java/com/iformall/interceptor/HttpServletRequestWrapperFilter.java @@ -1,10 +1,14 @@ package com.iformall.interceptor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; public class HttpServletRequestWrapperFilter implements Filter { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Override public void init(FilterConfig filterConfig) throws ServletException { @@ -13,7 +17,8 @@ public class HttpServletRequestWrapperFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { - + logger.debug("doFilter start"); + long start = System.currentTimeMillis(); ServletRequest requestWrapper = null; if (request instanceof HttpServletRequest) { requestWrapper = new BodyReaderHttpServletRequestWrapper((HttpServletRequest) request); @@ -23,7 +28,7 @@ public class HttpServletRequestWrapperFilter implements Filter { } else { chain.doFilter(requestWrapper, response); } - + logger.debug("doFilter end" + (System.currentTimeMillis()- start)); } @Override diff --git a/mallinkCApi/src/main/java/com/iformall/interceptor/RequestInterceptor.java b/mallinkCApi/src/main/java/com/iformall/interceptor/RequestInterceptor.java index 375576763..fee64248b 100644 --- a/mallinkCApi/src/main/java/com/iformall/interceptor/RequestInterceptor.java +++ b/mallinkCApi/src/main/java/com/iformall/interceptor/RequestInterceptor.java @@ -34,8 +34,10 @@ public class RequestInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + logger.debug("preHandle start"); if ("GET".equalsIgnoreCase(request.getMethod())) { // 获取不检查幂等 + logger.debug("preHandle start 1"); return true; } StringBuilder sb = new StringBuilder(); @@ -73,19 +75,21 @@ public class RequestInterceptor extends HandlerInterceptorAdapter { if (redisTemplate.opsForValue().setIfAbsent(key, key)) { redisTemplate.expire(key, 3, TimeUnit.SECONDS); logger.info(key + ": 第一次提交"); + logger.debug("preHandle start 2"); return true; } logger.info(key + ": 第二次提交"); + logger.debug("preHandle start 3"); return false; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { - + logger.debug("postHandle"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { - + logger.debug("afterCompletion"); } } diff --git a/mallinkCApi/src/main/java/com/iformall/interceptor/WebLogAspect.java b/mallinkCApi/src/main/java/com/iformall/interceptor/WebLogAspect.java new file mode 100644 index 000000000..12f35c7f9 --- /dev/null +++ b/mallinkCApi/src/main/java/com/iformall/interceptor/WebLogAspect.java @@ -0,0 +1,56 @@ +package com.iformall.interceptor; + +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.annotation.Pointcut; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; + +@Aspect +@Component +public class WebLogAspect { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + ThreadLocal startTime = new ThreadLocal<>(); + + + @Pointcut("execution(public * com.iformall.controller..*.*(..))") + public void webLog() {} + + @Before("webLog()") + public void doBefore(JoinPoint joinPoint) throws Throwable { + logger.debug("aspect start"); + startTime.set(System.currentTimeMillis()); + + // 接收到请求,记录请求内容 + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + HttpServletRequest request = attributes.getRequest(); + + // 记录下请求内容 + logger.info("URL : " + request.getRequestURL().toString()); + logger.info("HTTP_METHOD : " + request.getMethod()); + logger.info("IP : " + request.getRemoteAddr()); + logger.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName()); + logger.info("ARGS : " + Arrays.toString(joinPoint.getArgs())); + logger.debug("aspect start ..."); + } + + @AfterReturning(returning = "ret", pointcut = "webLog()") + public void doAfterReturning(Object ret) throws Throwable { + logger.debug("aspect after"); + // 处理完请求,返回内容 + logger.info("RESPONSE : " + ret); + logger.info("SPEND TIME : " + (System.currentTimeMillis() - startTime.get())); + logger.debug("aspect after .."); + } + + +}