利用AOP编程进行日志处理

来源:互联网 发布:webbench 源码 编辑:程序博客网 时间:2024/06/06 05:20

日志对象的获取

在类中声明如下语句:

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(){    }
原创粉丝点击