怎么在c#中利用ELMAH日志组件对异常进行处理

  介绍

本篇文章给大家分享的是有关怎么在c#中利用ELMAH日志组件对异常进行处理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

背景

ELMAH就是一个日志的拦截和处理组件,说到。net的日志组件,大家的第一反应该是Log4Net, NLog等这些东西,关于Log4Net和NLog,可以说是。net日志组件里面使用最为广泛的组件了,它们功能强大,使用方便。

优点

相比它们:

1, ELMAH的使用更加简单,它甚至不用写一句代码;

2, ELMAH是一种“可拔插式”的组件,即在一个运行的项目里面我们可以随意轻松加入日志功能,或者移除日志功能,

3, ELMAH组件自带界面,不用写任何代码,即可查看异常日志的界面;

4组件提供了一个用于集中记录和通知错误日志的机制,通过邮件的机制通知错误信息给相关人员。

代码实现

1, nuget安装,使用ELMAH;

怎么在c#中利用ELMAH日志组件对异常进行处理

2, Application_Error异常404处理

protected  void  Application_Error (object ,发送方,EventArgs  e)   ,,,{   ,,,,,if  (BQoolCommon.Helpers.Setting.CommonSetting.IsProd ())   ,,,,,{   ,,,,,,,if  (e  is  ExceptionFilterEventArgs  exceptionFilter)   ,,,,,,,{   ,,,,,,,,,if  (exceptionFilter.Exception  is  HttpException  HttpException ,,, httpException.Message.StartsWith (_exceptionMsg))   ,,,,,,,,,{   ,,,,,,,,,,,Response.Redirect (“/?;   ,,,,,,,,,}   ,,,,,,,}   ,,,,,,,Response.Clear ();   ,,,,,,,Server.ClearError ();   ,,,,,,,Response.StatusCode =, 404;   ,,,,,}   ,,,}

3排除Elmah 404寄信通知

public  void  ErrorMail_Filtering (object ,发送方,ExceptionFilterEventArgs  e)   ,,,{   ,,,,,if  (e.Exception  is  HttpException  HttpException ,,, (httpException.GetHttpCode (),==, 404, | |, httpException.Message.StartsWith (_exceptionMsg)))   ,,,,,{   ,,,,,,,e.Dismiss ();   ,,,,,}   ,,,}

4,自定Elmah发信主旨

void  ErrorMail_Mailing (object ,发送方,Elmah.ErrorMailEventArgs  e)   ,,,{   ,,,,,string  machineName =,“none  server";   ,,,,,试一试   ,,,,,{   ,,,,,,,if  (Request  !=, null)   ,,,,,,,{   ,,,,,,,,,machineName =, Request.ServerVariables (“HTTP_HOST");   ,,,,,,,}   ,,,,,}   ,,,,,   ,,,,,{   ,,,,,}      ,,,,,//,取得,Elamh  ErrorMail 的主旨   ,,,,,//,“MachineName,美元at  ErrorTime,美元:,{0}“;   ,,,,,string  elmahSubject =, e.Mail.Subject;   ,,,,,//替換,ErrorMail 的主旨內容   ,,,,,string  emailSubject =, string.Format (“BigCRM.Web  Error =祝辞,{0}“,   ,,,,,,elmahSubject   ,,,,,,,,,.Replace (“MachineName“美元,,MachineName)   ,,,,,);      ,,,,,e.Mail.Subject =, emailSubject;   ,,,}

5,网络。配置配置

& lt; elmah>   & lt; !——才能   ,,,阅读http://code.google.com/p/elmah/wiki/SecuringErrorLogPages  for    ,,,more 方式、提醒remote  access 以及securing  ELMAH。   ,才能在   & lt;才能security  allowRemoteAccess=癴alse"/比;   ,& lt;/elmah>   ,& lt;位置;路径=癳lmah.axd", inheritInChildApplications=癴alse"比;   & lt;才能system.web>   ,,& lt; httpHandlers>   ,,,& lt; add 动词=癙OST、GET、HEAD",路径=癳lmah.axd",类型=癊lmah.ErrorLogPageFactory,, Elmah"/比;   ,,& lt;/httpHandlers>   ,,& lt; !,,   ,,,阅读http://code.google.com/p/elmah/wiki/SecuringErrorLogPages  for    null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在c#中利用ELMAH日志组件对异常进行处理