介绍背景
优点
代码实现
本篇文章给大家分享的是有关怎么在c#中利用ELMAH日志组件对异常进行处理,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
背景
ELMAH就是一个日志的拦截和处理组件,说到。net的日志组件,大家的第一反应该是Log4Net, NLog等这些东西,关于Log4Net和NLog,可以说是。net日志组件里面使用最为广泛的组件了,它们功能强大,使用方便。
优点
相比它们:
1, ELMAH的使用更加简单,它甚至不用写一句代码;
2, ELMAH是一种“可拔插式”的组件,即在一个运行的项目里面我们可以随意轻松加入日志功能,或者移除日志功能,
3, ELMAH组件自带界面,不用写任何代码,即可查看异常日志的界面;
4组件提供了一个用于集中记录和通知错误日志的机制,通过邮件的机制通知错误信息给相关人员。
代码实现
1, nuget安装,使用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日志组件对异常进行处理