寡妇张开腿让黑人通爽,吃瓜黑料,欧美激情内射喷水高潮,亚洲精品午夜国产va久久成人

我要投稿 投訴建議

MVC如何使用Log4Net進(jìn)行錯誤日志記錄

時間:2021-04-13 13:22:31 日志日記 我要投稿

MVC如何使用Log4Net進(jìn)行錯誤日志記錄

  在Web應(yīng)用運(yùn)行過程中,我們難免會遇到程序運(yùn)行異常,這個時候我們就應(yīng)該將異常信息記錄下來,以便開發(fā)人員和維護(hù)人員對異常原因進(jìn)行還原,對異常原因進(jìn)行修復(fù)。在ASP.NET平臺中進(jìn)行日志記錄的組件也有很多,如Log4Net、CommonLogging等,我們這里選用Log4Net進(jìn)行異常日志的記錄。

MVC如何使用Log4Net進(jìn)行錯誤日志記錄

  1. 捕獲異常

  在ASP.NET MVC中提供了一個全局的異常處理過濾器:HandleErrorAttribute,可以通過該過濾器捕獲異常信息。

  我們在Models文件夾下新建類型Log4ExceptionAttribute,繼承HandleErrorAttribute類,同時重寫OnException方法來捕獲異常數(shù)據(jù):

  using System.Web.Mvc;namespace PMS.WebApp.Models{ public class Log4ExceptionAttribute:HandleErrorAttribute { ///

  /// 重寫OnException方法來捕獲異常數(shù)據(jù) ///

  ///public override void OnException(ExceptionContext filterContext) { base.OnException(filterContext); //捕獲當(dāng)前異常數(shù)據(jù) var ex = filterContext.Exception; } }}

  新建過濾器后我們還需要在Global文件中調(diào)用的RegisterGlobalFilters方法中完成自己定義異常處理過濾的注冊。

  using System.Web.Mvc;using PMS.WebApp.Models;namespace PMS.WebApp{ public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { //filters.Add(new HandleErrorAttribute()); filters.Add(new Log4ExceptionAttribute()); } }}

  2. 考慮到多用戶并發(fā)操作時可能產(chǎn)生的問題,我們需要新建一個隊(duì)列來進(jìn)行異常信息的暫存,同時開辟一個線程專門對隊(duì)列中的異常信息進(jìn)行處理。

  在Log4ExceptionAttribute類中新建一個靜態(tài)的異常類型的隊(duì)列,在發(fā)生異常后,程序自動觸發(fā)OnException方法,方法中將當(dāng)前的.異常信息入隊(duì)后,跳轉(zhuǎn)到錯誤頁面。

  using System;using System.Collections.Generic;using System.Web.Mvc;namespace PMS.WebApp.Models{ public class Log4ExceptionAttribute:HandleErrorAttribute { public static QueueExceptions=new Queue(); ///

  /// 重寫OnException方法來捕獲異常數(shù)據(jù) ///

  ///public override void OnException(ExceptionContext filterContext) { base.OnException(filterContext); //捕獲當(dāng)前異常數(shù)據(jù) var ex = filterContext.Exception; //將異常數(shù)據(jù)入隊(duì) Exceptions.Enqueue(ex); //跳轉(zhuǎn)到錯誤頁面 filterContext.HttpContext.Response.Redirect("/Error.html"); } }}

  Log4Net的配置是在應(yīng)用程序配置文件中進(jìn)行的,我們先在配置文件中進(jìn)行Log4Net的配置。Log4Net需要配置的節(jié)點(diǎn)位置和SpringNet完全相同,首先需要在configSessions中新增子節(jié)點(diǎn),然后在configuration節(jié)點(diǎn)中增加log4net節(jié)點(diǎn)完成具體配置。

  ...

  在配置文件中可以對日志記錄的信息、格式、文件名等作出具體的配置,下面是配置信息的詳解

  <"1.0"?>

  在Global文件中的Application_Start方法中開啟一個線程,用于將隊(duì)列中的錯誤信息寫入日志文件。

  using System.Linq;using System.Threading;using System.Web.Http;using System.Web.Mvc;using System.Web.Optimization;using System.Web.Routing;using log4net;using PMS.WebApp.Models;using Spring.Web.Mvc;namespace PMS.WebApp{ // 注意: 有關(guān)啟用 IIS6 或 IIS7 經(jīng)典模式的說明, // 請?jiān)L問 http://go.microsoft.com/?LinkId=9394801 public class MvcApplication : SpringMvcApplication//HttpApplication { protected void Application_Start() { log4net.Config.XmlConfigurator.Configure();//讀取Log4Net配置信息 AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); //開啟一個線程,掃描異常信息隊(duì)列. var filePath = Server.MapPath("/Log/"); ThreadPool.QueueUserWorkItem((a) => { while (true) { //判斷隊(duì)列中是否有數(shù)據(jù) if (Log4ExceptionAttribute.Exceptions.Any()) { //出隊(duì)一條異常信息 var ex = Log4ExceptionAttribute.Exceptions.Dequeue(); //若異常信息不為空 if (ex == null) continue; //將異常信息寫入到日志文件中 var logger = LogManager.GetLogger("errorMsg"); logger.Error(ex.ToString()); } else { //若異常信息隊(duì)列為空,則線程休息三秒 Thread.Sleep(3000); } } }, filePath); } }}

  成功完成錯誤日志的配置。

  以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持。

【MVC如何使用Log4Net進(jìn)行錯誤日志記錄】相關(guān)文章:

防火墻日志記錄對安全知識進(jìn)行全面解讀02-16

愛情日志記錄03-01

旅游的記錄日志06-29

傷感日志的記錄04-10

C++日志記錄類以及日志記錄程序06-23

記錄之中-心情日志11-06

愛的初記錄日志04-29

使用增添進(jìn)行造句04-19

MyQL Server的錯誤日志06-23

普格县| 昌宁县| 奉新县| 临洮县| 高阳县| 石门县| 江西省| 九台市| 五寨县| 台中市| 德昌县| 和硕县| 贵定县| 溆浦县| 嘉荫县| 新乡市| 通辽市| 墨脱县| 芒康县| 噶尔县| 刚察县| 通山县| 平定县| 贵港市| 巴彦淖尔市| 林口县| 禹城市| 吐鲁番市| 清丰县| 凤山市| 潮州市| 卢龙县| 襄城县| 南城县| 武功县| 宁远县| 杂多县| 盖州市| 大悟县| 华宁县| 上虞市|