// 申明是个切面
@Aspect
@Component
public class LogAspect {
private final static Logger logger = LoggerFactory.getLogger(LogAspect.class);
// ..表示包及子包 该方法代表controller层的所有方法 路径
// //申明一个切点 里面是 execution表达式
@Pointcut("execution(public * com.*.*.*.controller..*.*(..))") //这里写自己的路径
public void controllerMethod() {
}
@Before("controllerMethod()")
public void logRequestInfo(JoinPoint joinPoint) throws Exception {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
//打印请求内容
logger.info("===============请求内容===============");
logger.info("请求地址:"+StringTools.getIP(request));
logger.info("请求方式:"+request.getMethod());
logger.info("请求类方法:"+joinPoint.getSignature());
logger.info("请求类方法参数:"+ Arrays.toString(joinPoint.getArgs()));
logger.info("===============请求内容===============");
}
@AfterReturning(returning = "jsonObject", pointcut = "controllerMethod()")
public void logResultVOInfo(JSONObject jsonObject) throws Exception {
logger.info("--------------返回内容----------------");
logger.info("请求的结果:"+jsonObject.toJSONString());
logger.info("--------------返回内容----------------");
}
}