LogAspect.java 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package com.alvin.aspect;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.aspectj.lang.ProceedingJoinPoint;
  4. import org.aspectj.lang.annotation.Around;
  5. import org.aspectj.lang.annotation.Aspect;
  6. import org.aspectj.lang.annotation.Pointcut;
  7. import org.springframework.stereotype.Component;
  8. import org.springframework.web.context.request.RequestContextHolder;
  9. import org.springframework.web.context.request.ServletRequestAttributes;
  10. import javax.servlet.http.HttpServletRequest;
  11. import java.util.Arrays;
  12. import java.util.Objects;
  13. /**
  14. * 日志切片
  15. *
  16. * @author tianyunperfect
  17. * Created on 2019/9/19
  18. */
  19. @Component
  20. @Aspect
  21. @Slf4j
  22. public class LogAspect {
  23. @Pointcut("execution(public * com.alvin.controller..*.*(..))")
  24. public void webLog() {
  25. }
  26. @Around("webLog()")
  27. public Object webAop(ProceedingJoinPoint joinPoint) throws Throwable {
  28. /*
  29. * 执行方法之前
  30. */
  31. long start = System.currentTimeMillis();
  32. HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
  33. /*
  34. * 执行方法
  35. */
  36. Object result = joinPoint.proceed();
  37. /*
  38. * 执行方法之后
  39. */
  40. String split = "; ";
  41. String sb = "url=" + request.getRequestURL() + split +
  42. "method=" + request.getMethod() + split +
  43. "class_method=" + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName() + split +
  44. "args=" + Arrays.toString(joinPoint.getArgs()) + split +
  45. "consumer time(ms) = " + (System.currentTimeMillis() - start);
  46. log.info(sb);
  47. return result;
  48. }
  49. }