淘淘商城39-springmvc配置全域性異常處理
阿新 • • 發佈:2018-12-22
1.處理思路
專案執行過程中肯定會出現一些問題,當出現異常的時候,我們往往在Controller層捕獲並處理了,但這樣做不利於我們統一管理,所以需要一個前端控制器對異常進行統一處理。
全域性異常處理器中的處理邏輯:
捕獲整個系統中發生的異常。
- 異常寫入日誌檔案
- 及時通知開發人員。發郵件、簡訊。
- 展示一個友好的錯誤頁面,例如:您的網路故障,請重試。
2.建立全域性異常處理器
package com.taotao.search.exception; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; public class GlobalExceptionReslover implements HandlerExceptionResolver { Logger logger = LoggerFactory.getLogger(GlobalExceptionReslover.class); @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { //寫日誌檔案 logger.error("系統發生異常", ex); //發郵件、發簡訊 //Jmail:可以查詢相關的資料 //需要在購買簡訊。呼叫第三方介面即可。 //展示錯誤頁面 ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("message", "系統發生異常,請稍後重試"); modelAndView.setViewName("error/exception"); return modelAndView; } }
3.配置log4j
log4j.rootLogger=INFO,A3,STDOUT log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout log4j.appender.STDOUT.layout.ConversionPattern=[%p] [%l] %10.10c - %m%n log4j.appender.A3=org.apache.log4j.RollingFileAppender log4j.appender.A3.file=logs/server.log log4j.appender.A3.MaxFileSize=1024KB log4j.appender.A3.MaxBackupIndex=10 log4j.appender.A3.layout=org.apache.log4j.PatternLayout log4j.appender.A3.layout.ConversionPattern=\n\n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n
4.配置springmvc.xml
<!-- 全域性異常處理 -->
<bean class="com.taotao.search.exception.GlobalExceptionReslover"></bean>
5.測試訪問
在controller新增一個異常
會被全域性異常處理器攔截
在taotao-search-web專案會出現一個logs資料夾,下面有server.log日誌檔案