項目里搭建了ELK日志分析域携,能夠將后臺的不同級別日志分類檢索查看,其中error日志主要包括各種拋出的異常鱼喉,用于定位系統(tǒng)的問題秀鞭。
error日志的打印使用了logback的error()方法,但是如果要把每個異常都打印出來的話扛禽,需要在controller層的catch塊中寫:
logger.error("出錯原因",ex);
由于需要每個異常人工寫錯誤日志打印锋边,經(jīng)常出現(xiàn)遺漏,所以想找一個集中的點编曼,把遺漏的異常打印出來豆巨,用于排錯。
目前采用SimpleMappingExceptionResolver來處理掐场。
1往扔、代碼處理
public class CustomExceptionHandler implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object object, Exception exception) {
ModelAndView modelAndView = new ModelAndView("/frame/error", model);
/* 錯誤日志輸出到控制臺 */
logger.error("捕捉到Spring全局異常",ex);
return modelAndView;
}
}
2贩猎、聲明到 Spring 配置文件
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="/frame/error"></property>
<property name="exceptionMappings">
<props>
<prop key="java.lang.Exception">/frame/error</prop>
</props>
</property>
</bean>
這樣如果controller層沒有捕捉的異常,也可以打印出錯誤日志瓤球。