c# 用ELMAH日志組件處理異常
背景
ELMAH就是一個(gè)日志的攔截和處理組件,說到.net的日志組件,大家的第一反應(yīng)該是Log4Net、NLog等這些東西,關(guān)于Log4Net和NLog,可以說是.net日志組件里面使用最為廣泛的組件了,它們功能強(qiáng)大、使用方便。
優(yōu)點(diǎn)
相比它們:
1、ELMAH的使用更加簡單,它甚至不用寫一句代碼;
2、ELMAH是一種“可拔插式”的組件,即在一個(gè)運(yùn)行的項(xiàng)目里面我們可以隨意輕松加入日志功能,或者移除日志功能;
3、ELMAH組件自帶界面,不用寫任何代碼,即可查看異常日志的界面;
4、組件提供了一個(gè)用于集中記錄和通知錯(cuò)誤日志的機(jī)制,通過郵件的機(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)目來說不失為一種不錯(cuò)的選擇;
以上就是c# 用ELMAH日志組件處理異常的詳細(xì)內(nèi)容,更多關(guān)于c# ELMAH日志組件的資料請關(guān)注腳本之家其它相關(guān)文章!
- 基于c# Task自己動(dòng)手寫個(gè)異步IO函數(shù)
- C#異步方法返回void與Task的區(qū)別詳解
- 深入分析C#中的異步和多線程
- c# winform異步不卡界面的實(shí)現(xiàn)方法
- C#用委托BeginInvoke做異步線程
- C#中一個(gè)高性能異步socket封裝庫的實(shí)現(xiàn)思路分享
- C#實(shí)現(xiàn)異步編程的方法
- c#中Winform實(shí)現(xiàn)多線程異步更新UI(進(jìn)度及狀態(tài)信息)
- C# 開發(fā)日志本地化工具
- c# 用Dictionary實(shí)現(xiàn)日志數(shù)據(jù)批量插入
- C#使用SqlServer作為日志數(shù)據(jù)庫的設(shè)計(jì)與實(shí)現(xiàn)
- C#打印日志的方法總結(jié)
- c#快速寫本地日志方法
- C#中四步輕松使用log4net記錄本地日志的方法
- c# 編寫一個(gè)輕量級(jí)的異步寫日志的實(shí)用工具類(LogAsyncWriter)
相關(guān)文章
C#簡單獲取全屏中鼠標(biāo)焦點(diǎn)位置坐標(biāo)的方法示例
這篇文章主要介紹了C#簡單獲取全屏中鼠標(biāo)焦點(diǎn)位置坐標(biāo)的方法,涉及C#針對(duì)鼠標(biāo)位置Position屬性的簡單操作技巧,需要的朋友可以參考下2017-07-07C# winformTextBox 鍵盤監(jiān)聽方式
這篇文章主要介紹了C# winformTextBox 鍵盤監(jiān)聽方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04使用C#自制一個(gè)Windows安裝包的詳細(xì)過程
這篇文章主要介紹了如何使用C#自制一個(gè)Windows安裝包,文中通過圖文結(jié)合的方式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07C# 使用Free Spire.Presentation 實(shí)現(xiàn)對(duì)PPT插入、編輯、刪除表格
小編發(fā)現(xiàn)使用.NET組件——Free Spire.Presentation,在C#中添加該產(chǎn)品DLL文件,可以簡單快速地實(shí)現(xiàn)對(duì)演示文稿的表格插入、編輯和刪除等操作,具體實(shí)現(xiàn)代碼大家參考下本文吧2017-09-09