Bläddra i källkod

[C端][修改]:添加api计时

release_toaliyun_real
Stormeye Wu 7 år sedan
förälder
incheckning
228be06f05
3 ändrade filer med 69 tillägg och 4 borttagningar
  1. +7
    -2
      mallinkCApi/src/main/java/com/iformall/interceptor/HttpServletRequestWrapperFilter.java
  2. +6
    -2
      mallinkCApi/src/main/java/com/iformall/interceptor/RequestInterceptor.java
  3. +56
    -0
      mallinkCApi/src/main/java/com/iformall/interceptor/WebLogAspect.java

+ 7
- 2
mallinkCApi/src/main/java/com/iformall/interceptor/HttpServletRequestWrapperFilter.java Visa fil

@@ -1,10 +1,14 @@
package com.iformall.interceptor; package com.iformall.interceptor;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.*; import javax.servlet.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;


public class HttpServletRequestWrapperFilter implements Filter { public class HttpServletRequestWrapperFilter implements Filter {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Override @Override
public void init(FilterConfig filterConfig) throws ServletException { public void init(FilterConfig filterConfig) throws ServletException {


@@ -13,7 +17,8 @@ public class HttpServletRequestWrapperFilter implements Filter {
@Override @Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException { throws IOException, ServletException {

logger.debug("doFilter start");
long start = System.currentTimeMillis();
ServletRequest requestWrapper = null; ServletRequest requestWrapper = null;
if (request instanceof HttpServletRequest) { if (request instanceof HttpServletRequest) {
requestWrapper = new BodyReaderHttpServletRequestWrapper((HttpServletRequest) request); requestWrapper = new BodyReaderHttpServletRequestWrapper((HttpServletRequest) request);
@@ -23,7 +28,7 @@ public class HttpServletRequestWrapperFilter implements Filter {
} else { } else {
chain.doFilter(requestWrapper, response); chain.doFilter(requestWrapper, response);
} }
logger.debug("doFilter end" + (System.currentTimeMillis()- start));
} }


@Override @Override


+ 6
- 2
mallinkCApi/src/main/java/com/iformall/interceptor/RequestInterceptor.java Visa fil

@@ -34,8 +34,10 @@ public class RequestInterceptor extends HandlerInterceptorAdapter {


@Override @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
logger.debug("preHandle start");
if ("GET".equalsIgnoreCase(request.getMethod())) { if ("GET".equalsIgnoreCase(request.getMethod())) {
// 获取不检查幂等 // 获取不检查幂等
logger.debug("preHandle start 1");
return true; return true;
} }
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
@@ -73,19 +75,21 @@ public class RequestInterceptor extends HandlerInterceptorAdapter {
if (redisTemplate.opsForValue().setIfAbsent(key, key)) { if (redisTemplate.opsForValue().setIfAbsent(key, key)) {
redisTemplate.expire(key, 3, TimeUnit.SECONDS); redisTemplate.expire(key, 3, TimeUnit.SECONDS);
logger.info(key + ": 第一次提交"); logger.info(key + ": 第一次提交");
logger.debug("preHandle start 2");
return true; return true;
} }
logger.info(key + ": 第二次提交"); logger.info(key + ": 第二次提交");
logger.debug("preHandle start 3");
return false; return false;
} }


@Override @Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
logger.debug("postHandle");
} }


@Override @Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
logger.debug("afterCompletion");
} }
} }

+ 56
- 0
mallinkCApi/src/main/java/com/iformall/interceptor/WebLogAspect.java Visa fil

@@ -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<Long> 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 ..");
}


}

Laddar…
Avbryt
Spara