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 62 63 64 65 66 67 68
   | @Aspect @Component public class LogAspect {     public LogAspect() {         System.out.println("Common LogAspect");     }
      private final static Logger LOG = LoggerFactory.getLogger(LogAspect.class);
      
 
      @Pointcut("execution(public * com.xiao..*Controller.*(..))")     public void controllerPointcut() {     }
      @Before("controllerPointcut()")     public void doBefore(JoinPoint joinPoint) {
                   ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();         HttpServletRequest request = attributes.getRequest();         Signature signature = joinPoint.getSignature();         String name = signature.getName();
                   LOG.info("------------- 开始 -------------");         LOG.info("请求地址: {} ,请求方式: {}", request.getRequestURL().toString(), request.getMethod());         LOG.info("类名方法: {}.{}", signature.getDeclaringTypeName(), name);         LOG.info("远程地址: {}", request.getRemoteAddr());
                   Object[] args = joinPoint.getArgs();         
                   Object[] arguments = new Object[args.length];         for (int i = 0; i < args.length; i++) {             if (args[i] instanceof ServletRequest                     || args[i] instanceof ServletResponse                     || args[i] instanceof MultipartFile) {                 continue;             }             arguments[i] = args[i];         }                  String[] excludeProperties = {};         PropertyPreFilters filters = new PropertyPreFilters();         PropertyPreFilters.MySimplePropertyPreFilter excludefilter = filters.addFilter();         excludefilter.addExcludes(excludeProperties);         LOG.info("请求参数: {}", JSONObject.toJSONString(arguments, excludefilter));     }
      @Around("controllerPointcut()")     public Object doAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {         long startTime = System.currentTimeMillis();         Object result = proceedingJoinPoint.proceed();                  String[] excludeProperties = {};         PropertyPreFilters filters = new PropertyPreFilters();         PropertyPreFilters.MySimplePropertyPreFilter excludefilter = filters.addFilter();         excludefilter.addExcludes(excludeProperties);         LOG.info("返回结果: {}", JSONObject.toJSONString(result, excludefilter));         LOG.info("------------- 结束 耗时:{} ms -------------", System.currentTimeMillis() - startTime);         return result;     }
  }
   |