【進展】爲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

相關文章
相關標籤/搜索