又一款日志组件:ELMAH日志处理异常

背景

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

优点

相比它们:

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

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

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

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

代码实现

1、nuget安装 using Elmah;


 2、Application_Error 异常404处理

protectedvoidApplication_Error(object sender, EventArgs e)

        {

            if (BQoolCommon.Helpers.Setting.CommonSetting.IsProd())

            {

                if(eis ExceptionFilterEventArgs exceptionFilter)

                {

                    if(exceptionFilter.ExceptionisHttpException httpException && httpException.Message.StartsWith(_exceptionMsg))

                    {

                        Response.Redirect("/");

                    }

                }

                Response.Clear();

                Server.ClearError();

                Response.StatusCode =404;

            }

        }

3、排除 Elmah 404 寄信通知

publicvoidErrorMail_Filtering(object sender, ExceptionFilterEventArgs e)

        {

            if(e.ExceptionisHttpException httpException && (httpException.GetHttpCode() ==404|| httpException.Message.StartsWith(_exceptionMsg)))

            {

                e.Dismiss();

            }

        }

4、自定 Elmah 发信主旨

voidErrorMail_Mailing(object sender, Elmah.ErrorMailEventArgs e)

        {

            stringmachineName ="none server";

            try            {

                if(Request !=null)

                {

                    machineName = Request.ServerVariables["HTTP_HOST"];

                }

            }

            catch            {

            }

            // 取得 Elamh ErrorMail 的主旨

            // "$MachineName$ at $ErrorTime$ : {0}"stringelmahSubject = e.Mail.Subject;

            //替換 ErrorMail 的主旨內容stringemailSubject =string.Format("BigCRM.Web Error => {0}",

                elmahSubject

                    .Replace("$MachineName$", machineName)

            );

            e.Mail.Subject = emailSubject;

        }

5、web.config配置

   

    -->                                     

        See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for more information onusing ASP.NET authorization securing ELMAH.

                                    -->                                 

运行效果




总结

ELMAH对于中小项目来说不失为一种不错的选择;

你可能感兴趣的:(又一款日志组件:ELMAH日志处理异常)