@Aspect @Component public class ConsoleLogAspect { /** * 设置切面点(切面地址根据自己的项目填写) */ @Pointcut(value = "(execution(* com.jx.smart.edu..controller.*.*(..)))") public void webLog() { } /** * 指定切点前的处理方法 * * @param joinPoint * @throws Exception */ @Before("webLog()") public void doBefore(JoinPoint joinPoint) throws Exception { //获取request对象 ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); StringBuilder sb = new StringBuilder(); sb.append("\n请求路径:" + DateUtil.now() + " " + request.getRequestURL().toString() + " " + request.getMethod() + "\n"); if (request.getMethod().equalsIgnoreCase(RequestMethod.GET.name())) { Map<String, String[]> parameterMap = request.getParameterMap(); Map<String, String> paramMap = new HashMap<>(); parameterMap.forEach((key, value) -> paramMap.put(key, Arrays.stream(value).collect(joining(",")))); sb.append("请求内容:" + JSONUtil.toJsonStr(paramMap)); } else if (request.getMethod().equalsIgnoreCase(RequestMethod.POST.name())) { Object[] args = joinPoint.getArgs(); StringBuilder stringBuilder = new StringBuilder(); Arrays.stream(args).forEach(object -> stringBuilder.append(object.toString().replace("=", ":"))); if (stringBuilder.length() == 0) { stringBuilder.append("{}"); } sb.append("请求内容:" + stringBuilder.toString()); } Console.log(sb.toString()); } /** * 指定切点前的处理方法 * * @param result */ @AfterReturning(pointcut = "webLog()", returning = "result") public void doAfterReturning(Object result) { if (ObjectUtils.isEmpty(result)) { return; } Console.log("返回結果:" + JSONUtil.toJsonStr(result)); } }
切面获取请求及返回数据
最新推荐文章于 2024-07-03 19:13:37 发布