Spring使用aop将日志(包括异常信息)输入到日志文件

本文介绍了如何使用Spring的AOP(面向切面编程)来记录日志,包括异常信息。作者在遇到无法查看远程服务器上接口错误的问题后,决定通过AOP避免在每个方法中手动添加日志代码,提高代码可维护性。文章详细讲解了基于AspectJ注解和XML配置的两种AOP实现方式,并提供了切入点表达式的示例。
摘要由CSDN通过智能技术生成

Spring使用aop将日志(包括异常信息)输入到日志文件

最近把刚开发的代码部署到服务器,因为使用的是本地web和Junit测试接口,那是没问题的,但其实接口是给安卓用的,他那边一测试就报错。由于之前没有把异常信息输入到日志文件(第一次把单独开发的后台部署到远程服务器,没有经验),所以没法查看哪里出错了。今天才想到使用日志把异常日志使用普通的log4j记录日志,使用普通的日志记录信息,需要在每个方法要使用日志的都要使用这句话private static final Log log = LogFactory.getLog(JYLog.class);这样破坏了代码的完整性,而且日志代码的可重复使用性太差。所以就想像配置权限过滤器一样,配置日志aop。

首先介绍一下aop的知识吧。(第一次真正接触aop是在配置权限管理的时候,因为本人不喜欢jsp,把java代码嵌套到jsp中,总觉得这没有真正做到MVC的思想,代码模块化不够,扯远了)
注,一下有些是从别人的地方copy过来的,只是添加个人理解而已

AOP(Aspect-Oriented Programming,面向切面编程)

切面(Aepect):横切关注点(跨越应用程序多个模块的功能)被模块化的对象;

通知(Advice):切面必须要完成的工作;

目标(Target):被通知的对象;

代理(Proxy):像目标对象应用通知之后创建的对象;

连接点(Joinpoint):程序执行的某个特殊位置,如类某个方法调用前、调用后、方法抛出异常后等。连接点由两个信息确定:方法表示的程序执行点;想对点表示的方位。

切点(pointcut):每个类都拥有多个连接点,即连接点是程序类中客观存在的事务;  

AOP通过切点定位到特定的连接点。

AOP的主要编程对象是切面(aopect),而切面模块化横切关注点

在应用AOP编程时,仍需要定义公共功能,但可以明确这个功能在哪里,以什么方式应用,并且不必修改受影响的类,这样的话横切关注点就被模块化到特殊的对象(切面)里。

AOP的好处:

  每个事物逻辑位于一个位置,代码不分散,便于维护和升级;

  业务模块更简洁,值包含核心业务代码


两种方式使用aop:一是使用aspectj注解,二是基于xml配置的aop

1、基于AspectJ注解

(1)Maven引入依赖包
复制代码
<dependency>  
  <groupId>org.springframework</groupId>  
  <artifactId>spring-aop</artifactId>  
  <version>4.2.4.RELEASE</version>  
</dependency>  
<dependency>  
  <groupId>org.aspectj</groupId>  
  <artifactId>aspectjweaver</artifactId>  
  <version>1.6.1</version>  
</dependency>  
<dependency>  
  <groupId>org.aspectj</groupId>  
  <artifactId>aspectjrt</artifactId>  
  <version>1.6.1</ve
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值