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


           在使用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;
    	}
    }
  • 相关阅读:
    Ubuntu12.04安装svn1.8
    [NOIP模拟测试3] 建造游乐园 题解(欧拉图性质)
    图论模板
    [bzoj3073] Journeys 题解(线段树优化建图)
    [bzoj3033]太鼓达人 题解(搜索)
    [NOIP2016]天天爱跑步 题解(树上差分) (码长短跑的快)
    [HNOI2015]菜肴制作 题解(贪心+拓扑)
    [SDOI2015]排序 题解 (搜索)
    [CQOI2011]放棋子 题解(dp+组合数学)
    [ZJOI2011]看电影(组合数学/打表+高精)
  • 原文地址:https://www.cnblogs.com/wala-wo/p/5125354.html
Copyright © 2020-2023  润新知