今日,为本身的开源项目加入日志模块,完成写日志功能,主要获取应用在执行过程当中一系列调用的类,方法信息。该日志功能利用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