您的位置:首页 > 编程语言 > Java开发

Spring MVC自定义统一异常处理类,并且在控制台中输出错误日志

2016-01-12 15:29 1031 查看
       在使用SimpleMappingExceptionResolver实现统一异常处理后(参考Spring MVC的异常统一处理方法),发现出现异常时,log4j无法在控制台输出错误日志。因此需要自定义一个继承至SimpleMappingExceptionResolver的RrtongMappingExceptionResolver类,在RrtongMappingExceptionResolver中通过log.error(ex.getMessage())的方式输出日志到控制台上。以下是具体的配置和RrtongMappingExceptionResolver的实现。

         配置自定义的统一异常处理类RrtongMappingExceptionResolver

<bean name="exceptionResolver"  class="com.rrtong.frame.exception.RrtongMappingExceptionResolver">
<!-- 定义异常处理页面用来获取异常信息的变量名,默认名为exception -->
<property name="exceptionAttribute" value="ex"></property>
<!--定义需要特殊处理的异常,用类名或完全路径名作为key,异常也页名作为值-->
<property name="exceptionMappings">
<props>
<prop key="com.rrtong.frame.exception.GuideTestException">../../exception/error-interface</prop>
<!--<prop key="com.rrtong.frame.exception.NotLoginException">login</prop>-->
<prop key="java.lang.Exception">../../exception/errorPage</prop>
</props>
</property>
<property name="statusCodes">
<props>
<prop key="errors/error">500</prop>
<prop key="errors/404">404</prop>
</props>
</property>
<!-- 设置日志输出级别,不定义则默认不输出警告等错误日志信息 -->
<property name="warnLogCategory" value="DEBUG" />
<!-- 默认HTTP状态码 -->
<property name="defaultStatusCode" value="500" />
</bean>


         实现统一异常处理类RrtongMappingExceptionResolver     

/**
* @className: RrtongMappingExceptionResolver
* @description: 继承至SimpleMappingExceptionResolver的自定义的统一异常处理
* @author: Administrator
* @date 2016年1月12日
*/
public class RrtongMappingExceptionResolver extends SimpleMappingExceptionResolver{
private final static Logger log = LoggerFactory.getLogger(RrtongMappingExceptionResolver.class);

@Override
protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex) {
Map<String, Exception> model = new HashMap<String, Exception>();
model.put("ex", ex);
ModelAndView modelAndView = new ModelAndView("../../exception/errorPage",model);

/*错误日志输出到控制台*/
log.error(ex.getMessage());

return modelAndView;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息