package org.onlinecourse.aop;
import org.apache.log4j.Logger;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
public class LogAop {
private static final Logger logger = Logger.getRootLogger();
public void doAfter(JoinPoint jp) {
logger.info("log Ending method: " + jp.getTarget().getClass().getName()
+ "." + jp.getSignature().getName());
}
public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
long time = System.currentTimeMillis();
Object retVal = pjp.proceed();
time = System.currentTimeMillis() - time;
logger.info("process time: " + time + " ms");
return retVal;
}
public void doBefore(JoinPoint jp) {
logger.info("log Begining method: "
+ jp.getTarget().getClass().getName() + "."
+ jp.getSignature().getName());
}
public void doThrowing(JoinPoint jp, Throwable ex) {
logger.info("method " + jp.getTarget().getClass().getName() + "."
+ jp.getSignature().getName() + " throw exception");
logger.error(ex.getMessage());
}
}
import org.apache.log4j.Logger;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
public class LogAop {
private static final Logger logger = Logger.getRootLogger();
public void doAfter(JoinPoint jp) {
logger.info("log Ending method: " + jp.getTarget().getClass().getName()
+ "." + jp.getSignature().getName());
}
public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
long time = System.currentTimeMillis();
Object retVal = pjp.proceed();
time = System.currentTimeMillis() - time;
logger.info("process time: " + time + " ms");
return retVal;
}
public void doBefore(JoinPoint jp) {
logger.info("log Begining method: "
+ jp.getTarget().getClass().getName() + "."
+ jp.getSignature().getName());
}
public void doThrowing(JoinPoint jp, Throwable ex) {
logger.info("method " + jp.getTarget().getClass().getName() + "."
+ jp.getSignature().getName() + " throw exception");
logger.error(ex.getMessage());
}
}
本文介绍了一个基于AspectJ的AOP日志拦截器实现,该实现包括方法调用前后记录日志、方法执行时间测量及异常捕获等功能。
962

被折叠的 条评论
为什么被折叠?



