欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

springmvc錯誤處理機制是什么

這篇“springmvc錯誤處理機制是什么”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“springmvc錯誤處理機制是什么”文章吧。

創(chuàng)新互聯(lián)建站一直通過網(wǎng)站建設和網(wǎng)站營銷幫助企業(yè)獲得更多客戶資源。 以"深度挖掘,量身打造,注重實效"的一站式服務,以成都做網(wǎng)站、網(wǎng)站設計、移動互聯(lián)產(chǎn)品、成都全網(wǎng)營銷服務為核心業(yè)務。10多年網(wǎng)站制作的經(jīng)驗,使用新網(wǎng)站建設技術,全新開發(fā)出的標準網(wǎng)站,不但價格便宜而且實用、靈活,特別適合中小公司網(wǎng)站制作。網(wǎng)站管理系統(tǒng)簡單易用,維護方便,您可以完全操作網(wǎng)站資料,是中小公司快速網(wǎng)站建設的選擇。

1、首先要在  golable  文件的  protected void Application_Start()


注冊一個錯誤處理機制。

MVC中自帶一個  過濾器

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

springmvc錯誤處理機制是什么

這里面 我們看到這個過濾器

2、其實就是在 app_Start文件夾下面 的 FilterConfig.cs 文件

springmvc錯誤處理機制是什么

3、 打開FilterConfig.cs文件

就寫了一個注冊事件。我們看得到 這個是對錯誤處理機制

springmvc錯誤處理機制是什么

(當然 ,你們看到的是  HandleErrorAttribute 這個類)

4、所以你們可能覺得奇怪,我們來查看MyExceptionAttribut的定義看一下

springmvc錯誤處理機制是什么

繼承了HandleErrorAttribute

這里我把這個類的代碼貼一下


public class MyExceptionAttribute : HandleErrorAttribute     {         //  private static object obj = new object();         public static ConcurrentQueue<Exception> ExceptionQueue = new ConcurrentQueue<Exception>();//定義隊列          /// <summary>         /// 在該方法中捕獲異常。         /// </summary>         /// <param name="filterContext"></param>         public override void OnException(ExceptionContext filterContext)         {              base.OnException(filterContext);             Exception ex = filterContext.Exception;//捕獲異常信息。             //將異常信息寫到隊列中。             ExceptionQueue.Enqueue(ex);             //跳轉到錯誤頁面.             filterContext.HttpContext.Response.Redirect("/Error.html");                      }     }

主要是定義一個靜態(tài) 隊列  ConcurrentQueue

(當然你也可以用 Queue。但是微軟說 這個ConcurrentQueue 比 Queue  安全。好像是線程安全的,一堆堆的理論,說白了就是用ConcurrentQueue 更安全)

這樣所有的錯誤就都在這個隊列里面了。(就是內存)

這樣總不行吧。內存 斷電就沒有了的啊。

所以我們要想把資料存到 硬盤中。

5、現(xiàn)在又要在

golable  文件的  protected void Application_Start()


中注冊一個消費線程(這句話后面會解釋,看不懂就繼續(xù))就是在 protected void Application_Start()中加入這些代碼,***放最前面。

內容就是線程池開啟一個線程 從剛剛定義的 MyExceptionAttribute的 ExceptionQueue隊列里面取出項來。

將錯誤信息最加到文件后面。如果隊列為空,就線程停留3秒。


string filePath = Server.MapPath("/Log/");             ThreadPool.QueueUserWorkItem((a) =>             {                  while (true)//注意:線程不能結束。后面寫到隊列中的數(shù)據(jù)沒法處理。                 {      // 這里可以加一條   if (MyExceptionAttribute.ExceptionQueue.Count() > 0) //{  發(fā)送郵件到管理員}                     if (MyExceptionAttribute.ExceptionQueue.Count() > 0)                     {                         // Exception ex= MyExceptionAttribute.ExceptionQueue.Dequeue();//從隊列中取出數(shù)據(jù).                         Exception ex = null;                         bool isResult = MyExceptionAttribute.ExceptionQueue.TryDequeue(out ex);                         if (ex != null && isResult)                         {                             string fullPath = filePath + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";                             File.AppendAllText(fullPath, ex.ToString());                          //   ILog logger = LogManager.GetLogger("errorMsg");                           //  logger.Error(ex.ToString());                         }                         else                         {                             Thread.Sleep(3000);                         }                     }                     else                     {                         Thread.Sleep(3000);//避免造成CPU的空轉。                     }                 }                 }, filePath);

6、總結。

這個就是一個生產(chǎn)者消費者的模式。

生產(chǎn)者就是 產(chǎn)生錯誤的源頭。 消費者就是注冊保存日志的方法。

中間有一個倉庫就是    那個靜態(tài)錯誤隊列。

可以看到 系統(tǒng)產(chǎn)生的錯誤臨時存放于內存中。然后一個新的線程 去讀寫靜態(tài)錯誤隊列。

正常情況 需要在錯誤隊列里面加一個錯誤隊列數(shù)字大于1000條的時候  發(fā)警告到郵箱的功能。那樣感覺有點問題復雜化了,畢竟這里只是講錯誤處理。

7、log4net 我前面講過的一個開源框架 記錄錯誤很好。

這里提供一個連接    log4net配置方法你可以把那個一起并到這里。那么就會有

把protected void Application_Start()中添加 的代碼

改成。注意是改成:

log4net.Config.XmlConfigurator.Configure();             //開始一個線程,查看異常隊列             string filePath = Server.MapPath("/Log/");             ThreadPool.QueueUserWorkItem((a) =>             {                  while (true)//注意:線程不能結束。后面寫到隊列中的數(shù)據(jù)沒法處理。                 {                     if (MyExceptionAttribute.ExceptionQueue.Count() > 0)                     {                         // Exception ex= MyExceptionAttribute.ExceptionQueue.Dequeue();//從隊列中取出數(shù)據(jù).                         Exception ex = null;                         bool isResult = MyExceptionAttribute.ExceptionQueue.TryDequeue(out ex);                         if (ex != null && isResult)                         {                             string fullPath = filePath + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";                             //File.AppendAllText(fullPath, ex.ToString());                             ILog logger = LogManager.GetLogger("errorMsg");                             logger.Error(ex.ToString());                         }                         else                         {                             Thread.Sleep(3000);                         }                     }                     else                     {                         Thread.Sleep(3000);//避免造成CPU的空轉。                     }                 }                 }, filePath);

這樣就會按照你的要求把錯誤日志記錄到

app_data文件夾下面。(前提是你有未處理的錯誤 。呵呵)

看到下圖就成功了

springmvc錯誤處理機制是什么

以上就是關于“springmvc錯誤處理機制是什么”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

標題名稱:springmvc錯誤處理機制是什么
分享URL:http://aaarwkj.com/article26/gdipjg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、響應式網(wǎng)站、網(wǎng)站導航外貿建站、建站公司網(wǎng)站設計公司

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設
国产精品九九久久精品三级| 亚洲成人日韩国产欧美| 亚洲国产综合亚洲综合国产| 中文字幕乱码日韩一二三区| 97视频网站在线观看| 国产成人精品无人区一区| 丰满人妻毛片一区二区三区| 国产成人一区二区三区影| 久久久久久久精品久久| 丝袜亚洲激情欧美日韩偷拍| 国产饥渴熟女在线三区| 91中文在线视频播放| 久久se精品人妻一区二区三区| 国产福利在线观看网站| 日韩中文字幕视频一区| 91无人区一区二区三乱码| 婷婷久久香蕉毛片毛片| 亚洲欧美制服另类国产| 人妻中文字幕一区二区三| 日本人妻三级精品久久| 欧美一区二区三区人妻熟妇| 久久久亚洲精品中文字幕蜜桃 | 亚洲国产精品激情在线| 国产精品大片久久激情四射| 亚洲一区二区三区精品日韩| av基地蜜桃蜜桃蜜桃| 日本免费在线不卡一区二区| 色爱区偷拍人妻中文字幕| 日韩三级视频一区二区| av丰满人妻一区二区| 亚洲国产精品久久久久久99| 久久青草视频在线观看| 亚洲一区日本一区二区| 精品亚洲美无人区乱码| 国语对白视频在线观看| 91精品国产自产在线观看| 老熟女露脸吞精一二三四区| 加藤桃香中文字幕在线| 日韩精品视频一区二区在线观看| 日韩在线视频这里只有精品| 欧美日本精品在线观看|