封装service层错误并打印进日志

今天发现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);
		}
	}
	
}

你可能感兴趣的:(java)