今天发现dwr抛错时候并没有报出error message,而是一个空字符串,看了下是因为某Exception类型没有message,而且之前service层也没有处理错误并记录而是直接往上层报错,只是把错误显示到网页上,导致之后查看service层错误没有一个统一的日志,因此这里使用sprng3的AOP注释给所有的service加了个错误处理,并统一记录到错误日志!AOP类如下:
package com.myweb.aspect;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
/**
* @author jsczxy2
* Service 错误捕捉AOP(记录到error.log日志)
*/
@Aspect
@Component
public class ServiceAspect {
Log log = LogFactory.getLog(getClass());
@Around("execution(* com.myweb.*service..*(..))")
public Object cacheException(ProceedingJoinPoint jp) throws Throwable{
try {
// 执行处理
Object result = jp.proceed();
return result;
}catch (Exception e) {
log.error("[" + jp.getTarget().getClass().getSimpleName()+"."+jp.getSignature().getName() + "]=======>" + e);
throw new Exception(e);
}
}
}