Просмотр исходного кода

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

release_toaliyun_real
Stormeye Wu 7 лет назад
Родитель
Сommit
114f959cee
3 измененных файлов: 69 добавлений и 4 удалений
  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 Просмотреть файл

@@ -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


+ 6
- 2
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");
}
}

+ 56
- 0
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<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 ..");
}


}

Загрузка…
Отмена
Сохранить