spring里捕捉全局异常

2018-07-09  本文已影响0人  高旸1988

项目里搭建了ELK日志分析,能够将后台的不同级别日志分类检索查看,其中error日志主要包括各种抛出的异常,用于定位系统的问题。
error日志的打印使用了logback的error()方法,但是如果要把每个异常都打印出来的话,需要在controller层的catch块中写:
logger.error("出错原因",ex);
由于需要每个异常人工写错误日志打印,经常出现遗漏,所以想找一个集中的点,把遗漏的异常打印出来,用于排错。
目前采用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层没有捕捉的异常,也可以打印出错误日志。

上一篇下一篇

猜你喜欢

热点阅读