封裝service層錯誤並列印進日誌
阿新 • • 發佈:2019-02-05
今天發現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); } } }