国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

ASP.NET MVC使用Log4Net記錄異常日志并跳轉(zhuǎn)到靜態(tài)頁(yè)

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

本篇體驗(yàn)在ASP.NET MVC 4中使用Log4Net記錄日志。

通過(guò)NuGet安裝Log4Net。

需求是:當(dāng)出錯(cuò)時(shí)導(dǎo)向到Error.html靜態(tài)頁(yè)面,Log4Net記錄錯(cuò)誤信息。

大致的思路是:

1、寫(xiě)一個(gè)記錄日志的接口
2、實(shí)現(xiàn)記錄日志接口的類(lèi),用Log4Net的API實(shí)現(xiàn)
3、在Web.config中配置Log4Net
4、在Global.asax中注冊(cè)Log4Net
5、自定義一個(gè)出錯(cuò)頁(yè),以便在出錯(cuò)時(shí)導(dǎo)向到該靜態(tài)頁(yè)面
6、ASP.NET MVC默認(rèn)的異常過(guò)濾器是HandleErrorAttribute,我們需要自定義一個(gè)繼承HandleErrorAttribute的過(guò)濾器,并把自定義的過(guò)濾器注冊(cè)到全局過(guò)濾器中去

首先定義一個(gè)記錄日志的接口。

    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);     }

實(shí)現(xiàn)ILoggerService,使用用Log4Net的API實(shí)現(xiàn)。

    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>   ......  <!--日志的配置開(kāi)始-->  <log4net>    <root>      <level value="ALL" />      <appender-ref ref="SysAppender" />    </root>    <logger name="WebLogger">      <!--配置日志的級(jí)別,低于此級(jí)別的就不寫(xiě)到日志里面去-->      <level value="DEBUG" />    </logger>    <!--系統(tǒng)日志的格式-->    <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>    <!--控制臺(tái)日志的格式-->    <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>  <!--日志的配置結(jié)束--></configuration>

在全局文件Global.asax中注冊(cè)Log4Net。

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

ASP.NET MVC默認(rèn)的異常過(guò)濾器是HandleErrorAttribute,我們需要自定義,繼承該類(lèi)。

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

自定義的異常過(guò)濾器當(dāng)讓要注冊(cè)到全局過(guò)濾器中去。打開(kāi)App_Start文件夾中的FilterConfig類(lèi),修改如下:

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

在HomeController中故意留一個(gè)錯(cuò)誤。

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

在項(xiàng)目根文件夾下頂一個(gè)Error.html靜態(tài)文件,用來(lái)呈現(xiàn)錯(cuò)誤提示信息。

當(dāng)瀏覽器請(qǐng)求Home/Index視圖,導(dǎo)向到Error.html出錯(cuò)頁(yè),Log4Net自動(dòng)為我們?cè)贏pp_Data目錄下記錄了異常信息。

到此這篇關(guān)于ASP.NET MVC使用Log4Net記錄異常日志并跳轉(zhuǎn)到靜態(tài)頁(yè)的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持。

標(biāo)簽: ASP.NET
相關(guān)文章:
主站蜘蛛池模板: 精品国产欧美精品v | 欧美三级网站 | 亚洲欧美视频一区二区三区 | 男女在线观看视频 | 久久国产影视 | 国产精品免费一区二区三区 | 99久久久免费精品免费 | 国产一区二 | 午夜看片a福利在线 | 男人天堂网2022 | 国产亚洲午夜精品a一区二区 | 欧美操操操操 | 日韩久久影院 | 精品久久一区 | 68久久久久欧美精品观看 | 免费观看欧美性一级 | 国产成人毛片毛片久久网 | 男人桶女人暴爽的视频 | 国产欧美日韩综合精品一区二区 | 欧美激情一级欧美精品 | 久9这里精品免费视频 | 一级毛片免费视频网站 | 国产精品亚洲精品日韩已方 | 国产亚洲午夜精品a一区二区 | 91国内精品久久久久怡红院 | 538在线视频二三区视视频 | 成年女人免费视频 | 一级性片 | 成熟女人免费一级毛片 | 欧美一级情欲片在线 | 国产欧美视频在线观看 | 中国美女乱淫免费看视频 | 国内精品一区二区三区最新 | 美女黄色免费看 | 成人午夜视频在线观看 | 国产女王s调视频vk 国产女王vk | 日韩视频免费一区二区三区 | 国产精品高清在线观看地址 | 小屁孩cao大人免费网站 | 在线欧美精品一区二区三区 | 一区二区三区四区免费视频 |