功能:实现AOP中异常日志管理的类
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.aspectj.apache.bcel.classfile.Method;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.aop.ThrowsAdvice;
/**
*@category com.utstar.nms.vmm.spring.aop
*@class LoggingThrowsAdvice
*@zhusheng3@126.com
*@date 2008-4-19 下午05:47:34
*/
@Aspect
public class LoggingThrowsAdvice implements ThrowsAdvice
{
private Logger logger =
Logger.getLogger(this.getClass().getName());
@Pointcut("execution(* org..*.*(..))")
private void logging() {}
@AfterThrowing(pointcut="logging()", throwing="throwable")
public void afterThrowing(JoinPoint jointPoint,
Throwable throwable) {
String errMsg = "/n ERROR:" ;
errMsg +="/n throwable:"+throwable+"/n";
errMsg +="error Class:"+jointPoint.getSignature().getDeclaringTypeName()+"/n";
errMsg +="error Method:"+jointPoint.getSignature().getName()+"(";
Object[] args = jointPoint.getArgs();
for (int i = 0; i < args.length; i++)
{
errMsg+="["+i+"]:"+args[i]+"";
if(i<args.length-1)errMsg+=",";
}
errMsg+=")/n";
errMsg+="error target:"+jointPoint.getTarget()+"/n";
errMsg+="error kind:"+jointPoint.getKind()+"/n";
// errMsg+="getClass:"+jointPoint.getClass()+"/n";
// errMsg+="Signature:"+jointPoint.getSignature()+"/n";
// errMsg+="SourceLocation:"+jointPoint.getSourceLocation()+"/n";
logger.log(Level.ERROR, errMsg,throwable);
System.out.println(errMsg);
}
}