package com.nanyan.securitylink.interceptor; import com.nanyan.securitylink.entity.UserHeader; import com.nanyan.securitylink.entity.UserThreadLocal; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @Component public class LogResponseTimeInterceptor implements HandlerInterceptor { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { long startTime = System.currentTimeMillis(); request.setAttribute("startTime", startTime); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { Long startTime = (Long) request.getAttribute("startTime"); long endTime = System.currentTimeMillis(); long time = endTime - startTime; // 打印接口耗时 // System.out.println("接口耗时:" + time + "ms"); String requestURI = request.getRequestURI(); UserHeader userHeader = UserThreadLocal.get(); String model = ""; if(userHeader != null){ model = UserThreadLocal.get().getModel(); logger.info("model:{} 接口{}耗时{} ms", model,requestURI, time); }else { logger.info("接口{}耗时{} ms",requestURI, time); } } }