package com.ziku.ms.weixin.config;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;
@Aspect
@Component
public class AspectConfig {
private static final Logger logger= LoggerFactory.getLogger(AspectConfig.class);
@Pointcut("execution(public * com.ziku.ms.weixin.web..*(..))")
public void log(){
}
@Before("log()")
public void doBefore(JoinPoint joinPoint){
logger.info("###############请求开始###################");
ServletRequestAttributes attributes= (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request=attributes.getRequest();
//url
logger.info("请求地址url:{}",request.getRequestURI());
//model
logger.info("请求方式mothod:{}",request.getMethod());
//ip
logger.info("请求ip:{}",request.getRemoteAddr());
//类方法
logger.info("请求方法class_method:{}",joinPoint.getSignature().getDeclaringTypeName()+"."+joinPoint.getSignature().getName());
//参数
logger.info("请求参数args:{}",joinPoint.getArgs());
Enumeration<String> names = request.getParameterNames();
while (names.hasMoreElements()){
String name=names.nextElement();
logger.info("name:{}",name);
logger.info("value:{}",request.getParameter(name));
}
}
@After("log()")
public void doAfter(){
}
@AfterReturning(pointcut = "log()",returning = "object")
public void doAfterRetruning(Object object){
logger.info("服务器响应response:{}",object);
logger.info("###############请求结束###################");
}
}