c# 用ELMAH日志組件處理異常
背景
ELMAH就是一個(gè)日志的攔截和處理組件,說(shuō)到.net的日志組件,大家的第一反應(yīng)該是Log4Net、NLog等這些東西,關(guān)于Log4Net和NLog,可以說(shuō)是.net日志組件里面使用最為廣泛的組件了,它們功能強(qiáng)大、使用方便。
優(yōu)點(diǎn)
相比它們:
1、ELMAH的使用更加簡(jiǎn)單,它甚至不用寫(xiě)一句代碼;
2、ELMAH是一種“可拔插式”的組件,即在一個(gè)運(yùn)行的項(xiàng)目里面我們可以隨意輕松加入日志功能,或者移除日志功能;
3、ELMAH組件自帶界面,不用寫(xiě)任何代碼,即可查看異常日志的界面;
4、組件提供了一個(gè)用于集中記錄和通知錯(cuò)誤日志的機(jī)制,通過(guò)郵件的機(jī)制通知錯(cuò)誤信息給相關(guān)人員。
代碼實(shí)現(xiàn)
1、nuget安裝 using Elmah;
2、Application_Error 異常404處理
protected void Application_Error(object sender, 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 sender, ExceptionFilterEventArgs e) { if (e.Exception is HttpException httpException && (httpException.GetHttpCode() == 404 || httpException.Message.StartsWith(_exceptionMsg))) { e.Dismiss(); } }
4、自定 Elmah 發(fā)信主旨
void ErrorMail_Mailing(object sender, Elmah.ErrorMailEventArgs e) { string machineName = "none server"; try { if (Request != null) { machineName = Request.ServerVariables["HTTP_HOST"]; } } catch { } // 取得 Elamh ErrorMail 的主旨 // "$MachineName$ at $ErrorTime$ : {0}" string elmahSubject = e.Mail.Subject; //替換 ErrorMail 的主旨內(nèi)容 string emailSubject = string.Format("BigCRM.Web Error => {0}", elmahSubject .Replace("$MachineName$", machineName) ); e.Mail.Subject = emailSubject; }
5、web.config配置
<elmah> <!-- See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for more information on remote access and securing ELMAH. --> <security allowRemoteAccess="false"/> </elmah> <location path="elmah.axd" inheritInChildApplications="false"> <system.web> <httpHandlers> <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/> </httpHandlers> <!-- See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for more information on using ASP.NET authorization securing ELMAH. <authorization> <allow roles="admin" /> <deny users="*" /> </authorization> --> </system.web> <system.webServer> <handlers> <add name="ELMAH" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode"/> </handlers> </system.webServer> </location>
運(yùn)行效果
總結(jié)
ELMAH對(duì)于中小項(xiàng)目來(lái)說(shuō)不失為一種不錯(cuò)的選擇;
以上就是c# 用ELMAH日志組件處理異常的詳細(xì)內(nèi)容,更多關(guān)于c# ELMAH日志組件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 基于c# Task自己動(dòng)手寫(xiě)個(gè)異步IO函數(shù)
- C#異步方法返回void與Task的區(qū)別詳解
- 深入分析C#中的異步和多線(xiàn)程
- c# winform異步不卡界面的實(shí)現(xiàn)方法
- C#用委托BeginInvoke做異步線(xiàn)程
- C#中一個(gè)高性能異步socket封裝庫(kù)的實(shí)現(xiàn)思路分享
- C#實(shí)現(xiàn)異步編程的方法
- c#中Winform實(shí)現(xiàn)多線(xiàn)程異步更新UI(進(jìn)度及狀態(tài)信息)
- C# 開(kāi)發(fā)日志本地化工具
- c# 用Dictionary實(shí)現(xiàn)日志數(shù)據(jù)批量插入
- C#使用SqlServer作為日志數(shù)據(jù)庫(kù)的設(shè)計(jì)與實(shí)現(xiàn)
- C#打印日志的方法總結(jié)
- c#快速寫(xiě)本地日志方法
- C#中四步輕松使用log4net記錄本地日志的方法
- c# 編寫(xiě)一個(gè)輕量級(jí)的異步寫(xiě)日志的實(shí)用工具類(lèi)(LogAsyncWriter)
相關(guān)文章
C#簡(jiǎn)單獲取全屏中鼠標(biāo)焦點(diǎn)位置坐標(biāo)的方法示例
這篇文章主要介紹了C#簡(jiǎn)單獲取全屏中鼠標(biāo)焦點(diǎn)位置坐標(biāo)的方法,涉及C#針對(duì)鼠標(biāo)位置Position屬性的簡(jiǎn)單操作技巧,需要的朋友可以參考下2017-07-07C# winformTextBox 鍵盤(pán)監(jiān)聽(tīng)方式
這篇文章主要介紹了C# winformTextBox 鍵盤(pán)監(jiān)聽(tīng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04詳解C#對(duì)路徑...的訪(fǎng)問(wèn)被拒絕解決過(guò)程
這篇文章主要介紹了詳解C#對(duì)路徑...的訪(fǎng)問(wèn)被拒絕解決過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12使用C#自制一個(gè)Windows安裝包的詳細(xì)過(guò)程
這篇文章主要介紹了如何使用C#自制一個(gè)Windows安裝包,文中通過(guò)圖文結(jié)合的方式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07C# MJPEG 客戶(hù)端簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要介紹了C# MJPEG 客戶(hù)端簡(jiǎn)單實(shí)現(xiàn)的方法,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-03-03C# 使用Free Spire.Presentation 實(shí)現(xiàn)對(duì)PPT插入、編輯、刪除表格
小編發(fā)現(xiàn)使用.NET組件——Free Spire.Presentation,在C#中添加該產(chǎn)品DLL文件,可以簡(jiǎn)單快速地實(shí)現(xiàn)對(duì)演示文稿的表格插入、編輯和刪除等操作,具體實(shí)現(xiàn)代碼大家參考下本文吧2017-09-09