今日,爲本身的開源項目加入日誌模塊,完成寫日誌功能,主要獲取應用在執行過程當中一系列調用的類,方法信息。該日誌功能利用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