【进展】为netVinace项目加入AOP日志功能(基于Spring 3.0)

给你一囗甜甜゛ 提交于 2020-03-09 21:48:16

今日,为自己的开源项目加入日志模块,完成写日志功能,主要获取应用在执行过程中一系列调用的类,方法信息。该日志功能利用Spring 3 基于AspectJ 注解完成。

下面是日志切面类的代码(关键留意注解 @Aspect, @Before  @After) 方法名可以自定义,但方法一定要带JoinPoint jp 这个参数,否则,无法获取执行类信息

@Aspect
public class LogDelegater implements ServiceUtil {

    //自己实现的日志类,封装自己想要的日志格式,实现读写日志功能
    private SystemLogger logger=new SystemLoggerImpl();
   
   
    public LogDelegater() {
        // TODO Auto-generated constructor stub
        System.out.println("******loggerDelegate*******"+SystemLogger.getLogFile().getAbsolutePath());
       
    }
    @Before("execution(* *.*(..))")
    public void doBefore(JoinPoint jp){
        String log_msg=jp.toLongString();//获取目标对象方法执行信息
        //DateUtil是自己写的日期时间类,方便使用
        Logger.getLogger("Before"+jp.getTarget().getClass()).info(DateUtil.getNowDateStr()+" "+DateUtil.getNowTimeStr()+" "+log_msg);
        logger.writeLogFile(DateUtil.getNowDateStr()+" "+DateUtil.getNowTimeStr()+" "+log_msg+" Execution..", SystemLogger.getLogFile());
    }
   
    @After("execution(* *.*(..))")
    public void doAfter(JoinPoint jp){
        String log_msg=jp.toLongString();//获取目标对象方法执行信息
        //DateUtil是自己写的日期时间类,方便使用
        Logger.getLogger("Before"+jp.getTarget().getClass()).info(DateUtil.getNowDateStr()+" "+DateUtil.getNowTimeStr()+" "+log_msg);
        logger.writeLogFile(DateUtil.getNowDateStr()+" "+DateUtil.getNowTimeStr()+" "+log_msg+" Finish!", SystemLogger.getLogFile());
    }
   
    /**
     * 一般业务执行方法,在此未被实现
     */
    @Override
    public boolean executeService(Object[] parms) {
        // TODO Auto-generated method stub
        return false;
    }

把这个类配置到spring中

<!-- AOP切面bean,负责系统日志生成 -->
<bean id="logDelegater" class="com.amos.main.log.LogDelegater">

写完,最后在spring配置文件中加入如下一句:

<aop:aspectj-autoproxy proxy-target-class="true"/>

完成Aaop日志功能。

想了解更多,可以下载NetVinace源码或和我联系。

NetVinace源码: http://git.oschina.net/amosworkgroup/netvinace

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!