LogAspect.java 1.8 KB

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