AOP之日志记录

IOC常有,而AOP不常有也。我很少使用AOP,学了ssm这么长时间项目中还是第一次用,据说AOP可以用来日志记录,性能统计,安全控制,事务处理,异常处理等等。

一:记录写啥日志呢?

用户访问我们的网站,我们可以把ip,他们在浏览器输入的url,走的控制器,还有返回的结果,或是没有出现的异常记录下来。

二:总体实现

  1. 最重要的还是拦截,拦截controller层方法的调用。
  2. 拦截之后通过aop切入就行了,我们可以把信息输出到一个文件,也可以输出到控制台。另外最重要的就是日志的输出级别等问题。

三:先实现拦截器

注意的点
  1. 首先是对LogAspect类上面要加上@Aspect,表示是切面。
  2. 当然不要忘记注册到IOC,用@Component
  3. @Pointcut定义切面,我在代码里面写的有注释
  4. 然后通过@Before,@After,@AfterReturning,可以通过日志输出不同时刻需要输出的日志信息。比如Object[] args = joinpoint.getArgs();就可以获取所有的参数。
  5. 另外可以看到doBefore函数的参数是JoinPoint类型的。当我们给我们定义的controller插入切面的时候,我们通过网页调controller的方法,有关controller的信息就自动会通过这个joinpoint传送过来。具体的下面说。


四:在@Before、@AfterReturning里面我们实现一下信息的输出

我觉得除了通过JoinPoint获取切入面的信息,另外就是通过request知道登录的ip之类的信息。我们可以通过RequestContextHolder获取,代码中都有,自己看吧。得到了request,岂不是想咋搞就咋搞?


你可能感兴趣的:(AOP之日志记录)