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

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

下面是日志切面类的代码(关键留意注解 @Aspect, @Before  @After) 方法名能够自定义,但方法必定要带JoinPoint jp 这个参数,不然,没法获取执行类信息 spring

@Aspect
public class LogDelegater implements ServiceUtil { ide

    //本身实现的日志类,封装本身想要的日志格式,实现读写日志功能
    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;
    } spa

把这个类配置到spring中 .net

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

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

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

完成Aaop日志功能。 源码

想了解更多,能够下载NetVinace源码或和我联系。 it

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

相关文章
相关标签/搜索