日志对象的获取
在类中声明如下语句:
private static final Logger logger = LoggerFactory.getLogger(ControllerAspect.class);
其中参数ControllerAspect.class
表示获取当前类的Class
对象作为传入参数。
Logger
使用的是org.slf4j.Logger
类。
切面类的创建
1.类注解
首先新建一个类,在类上加上@Aspect
这个注解进行声明。同时加@Component
注解,将该类实例的生命周期交给Spring
来管理。
2.切入点
接着,声明切入点和切入点表达式。可创建一个空的方法,在方法上添加注解@Pointcut来进行声明,例如:
@Pointcut(value = "execution(public * com.zqf.backend.system.web.controller.*.*(..))")
public void pointcut(){}
3.具体代码
@Before(value = "pointcut()")
public void doBefore(JoinPoint joinPoint){
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
//url
logger.info("url={}", request.getRequestURL());
//请求method
logger.info("method={}", request.getMethod());
//ip
logger.info("ip={}", request.getRemoteAddr());
//类方法
logger.info(joinPoint.getSignature().getDeclaringTypeName()+" "+joinPoint.getSignature().getName());
//参数
logger.info("args={}", joinPoint.getArgs());
}
@After(value = "pointcut()")
public void doAfter(){
}