1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| @Slf4j @Aspect @Configuration public class RequestAopConfig {
@Autowired private HttpServletRequest request;
private static final ThreadLocal<Long> START_TIME_MILLIS = new ThreadLocal<>();
@Pointcut("execution(* com.xxx.xxx.xxx..*(..)) " + "&&(@annotation(org.springframework.web.bind.annotation.PostMapping)" + "||@annotation(org.springframework.web.bind.annotation.GetMapping)" + "||@annotation(org.springframework.web.bind.annotation.PutMapping)" + "||@annotation(org.springframework.web.bind.annotation.DeleteMapping))") public void controllerMethodPointcut() { }
@Before("controllerMethodPointcut()") public void before(JoinPoint joinPoint) { START_TIME_MILLIS.set(System.currentTimeMillis()); }
@AfterReturning(value = "controllerMethodPointcut()", returning = "result") public void afterReturning(JoinPoint joinPoint, Object result) { String logTemplate = "--------------- 执行成功 ---------------\n请求开始---Send Request URL: {}, Method: {}, Params: {} \n请求方法---ClassName: {}, [Method]: {}, execution time: {}ms \n请求结束---Send Response Result: {}"; log.info(logTemplate, request.getRequestURL(), request.getMethod(), JSON.toJSONString(joinPoint.getArgs()), joinPoint.getSignature().getDeclaringTypeName(), joinPoint.getSignature().getName(), (System.currentTimeMillis() - START_TIME_MILLIS.get()), JSON.toJSONString(result)); START_TIME_MILLIS.remove(); }
@AfterThrowing(value = "controllerMethodPointcut()", throwing = "ex") public void afterThrowing(JoinPoint joinPoint, Throwable ex) { String logTemplate = "--------------- 执行失败 ---------------\n异常请求开始---Send Request URL: {}, Method: {}, Params: {} \n异常请求方法---ClassName: {}, [Method]: {}, execution time: {}ms \n异常请求结束---Exception Message: {}"; log.error(logTemplate, request.getRequestURL(), request.getMethod(), JSON.toJSONString(joinPoint.getArgs()), joinPoint.getSignature().getDeclaringTypeName(), joinPoint.getSignature().getName(), (System.currentTimeMillis() - START_TIME_MILLIS.get()), ex.getMessage()); START_TIME_MILLIS.remove(); }
@After("controllerMethodPointcut()") public void after(JoinPoint joinPoint) { } }
|