色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

ASP.NET MVC使用Log4Net記錄異常日志并跳轉到靜態頁

瀏覽:26日期:2022-06-08 18:49:23

本篇體驗在ASP.NET MVC 4中使用Log4Net記錄日志。

通過NuGet安裝Log4Net。

需求是:當出錯時導向到Error.html靜態頁面,Log4Net記錄錯誤信息。

大致的思路是:

1、寫一個記錄日志的接口
2、實現記錄日志接口的類,用Log4Net的API實現
3、在Web.config中配置Log4Net
4、在Global.asax中注冊Log4Net
5、自定義一個出錯頁,以便在出錯時導向到該靜態頁面
6、ASP.NET MVC默認的異常過濾器是HandleErrorAttribute,我們需要自定義一個繼承HandleErrorAttribute的過濾器,并把自定義的過濾器注冊到全局過濾器中去

首先定義一個記錄日志的接口。

    public interface ILoggerService    {void Info(string message);void Warn(string message);void Debug(string message);void Error(string message);void Error(Exception ex);void Fatal(string message);void Fatal(Exception ex);     }

實現ILoggerService,使用用Log4Net的API實現。

    public class LogHelper : ILoggerService    { private ILog _logger; public LogHelper() {    _logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);}public void Info(string message) {    _logger.Info(message);}public void Warn(string message) {    _logger.Warn(message);}public void Debug(string message) {    _logger.Debug(message);}public void Error(string message) {    _logger.Error(message);}public void Error(Exception ex) {    _logger.Error(ex.Message, ex);}public void Fatal(string message) {    _logger.Fatal(message);}public void Fatal(Exception ex) {    _logger.Fatal(ex.Message, ex);}    }

在Web.config中配置Log4Net。

<configuration>  <configSections>    ......    <!--日志的配置-->    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4Net" />  </configSections>   ......  <!--日志的配置開始-->  <log4net>    <root>      <level value="ALL" />      <appender-ref ref="SysAppender" />    </root>    <logger name="WebLogger">      <!--配置日志的級別,低于此級別的就不寫到日志里面去-->      <level value="DEBUG" />    </logger>    <!--系統日志的格式-->    <appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net">      <param name="File" value="App_Data/" />      <param name="AppendToFile" value="true" />      <param name="RollingStyle" value="Date" />      <param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" />      <param name="StaticLogFileName" value="false" />      <layout type="log4net.Layout.PatternLayout,log4net"><!--<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />-->      <conversionPattern value="{%level}%date{MM/dd HH:mm:ss} - %message%newline%newline"/>      </layout>    </appender>    <!--控制臺日志的格式-->    <appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">           <layout type="log4net.Layout.PatternLayout,log4net"><param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />      </layout>    </appender>  </log4net>  <!--日志的配置結束--></configuration>

在全局文件Global.asax中注冊Log4Net。

    public class MvcApplication : System.Web.HttpApplication    {protected void Application_Start(){    AreaRegistration.RegisterAllAreas();    ......    //讀取日志  如果使用log4net,應用程序一開始的時候,都要進行初始化配置    log4net.Config.XmlConfigurator.Configure();}    }

ASP.NET MVC默認的異常過濾器是HandleErrorAttribute,我們需要自定義,繼承該類。

    public class MyHandleExceptionAttribute : HandleErrorAttribute    {public override void OnException(ExceptionContext filterContext){    base.OnException(filterContext);    var log  = new LogHelper();    log.Error("被系統過濾捕獲的異常" + filterContext.Exception);    filterContext.HttpContext.Response.Redirect("/Error.html");}    }

自定義的異常過濾器當讓要注冊到全局過濾器中去。打開App_Start文件夾中的FilterConfig類,修改如下:

    public class FilterConfig    {public static void RegisterGlobalFilters(GlobalFilterCollection filters){    //filters.Add(new HandleErrorAttribute());    filters.Add(new MyHandleExceptionAttribute());}    }

在HomeController中故意留一個錯誤。

    public class HomeController : Controller    {public ActionResult Index(){    int a = 10;    int b = 0;    var result = a/b;    return View();}    }

在項目根文件夾下頂一個Error.html靜態文件,用來呈現錯誤提示信息。

當瀏覽器請求Home/Index視圖,導向到Error.html出錯頁,Log4Net自動為我們在App_Data目錄下記錄了異常信息。

到此這篇關于ASP.NET MVC使用Log4Net記錄異常日志并跳轉到靜態頁的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持。

標簽: ASP.NET
相關文章:
主站蜘蛛池模板: 91免费观看视频 | 成人手机在线视频 | 欧美激情欧美狂野欧美精品免费 | 国产中文字幕在线免费观看 | 91久久精品国产免费一区 | 日韩一级欧美一级一级国产 | 免费一级a毛片在线 | 国产免费一区不卡在线 | 欧美黄视频在线观看 | 国产女人一区二区 | 国产乱子伦片免费观看中字 | 黄色日韩网站 | 亲子乱子伦xxxx | 伊人色在线视频 | 国产精品国产三级国产在线观看 | 男女免费观看视频 | 波多野结衣一区二区三区高清在线 | 欧美三级做爰在线 | 女人张开腿让男人桶免费最新 | 99ri在线精品视频 | 国产精品香蕉一区二区三区 | 国产精品久久一区 | 色播基地 | 日本作爱 | 免费观看a视频 | 巨乳毛片 | 一区二区三区日本视频 | 免费看一级欧美激情毛片 | a级精品九九九大片免费看 a级毛片免费观看网站 | 亚洲欧美精品一中文字幕 | 一级中国乱子伦视频 | 一级黄色毛片免费看 | 日本欧美在线视频 | 日本三级精品 | 国产精品久久久久久免费播放 | 亚州免费视频 | 性生话一级国产片 | 99国产精品久久久久久久... | 欧美激情国产一区在线不卡 | 手机看片免费基地 | 一区二区三区四区五区六区 |