Spring MVC自定義統一異常處理類,而且在控制檯中輸出錯誤日誌

       在使用SimpleMappingExceptionResolver實現統一異常處理後(參考Spring MVC的異常統一處理方法), 發現出現異常時,log4j沒法在控制檯輸出錯誤日誌。所以須要自定義一個繼承至SimpleMappingExceptionResolver的 RrtongMappingExceptionResolver類,在RrtongMappingExceptionResolver中經過 log.error(ex.getMessage())的方式輸出日誌到控制檯上。如下是具體的配置和 RrtongMappingExceptionResolver的實現。html

         配置自定義的統一異常處理類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;
	}
}
相關文章
相關標籤/搜索