一尘不染

如何使用ELMAH手动记录错误

c#

是否可以使用ELMAH执行以下操作?

logger.Log(" something");

我正在做这样的事情:

try 
{
    // Code that might throw an exception 
}
catch(Exception ex)
{
    // I need to log error here...
}

因为已处理此异常,所以ELMAH不会自动记录该异常。


阅读 185

收藏
2020-05-19

共1个答案

一尘不染

自ELMAH 1.0开始使用的直接日志写入方法:

try 
{
    some code 
}
catch(Exception ex)
{
    Elmah.ErrorLog.GetDefault(HttpContext.Current).Log(new Elmah.Error(ex));
}

ELMAH 1.2引入了更灵活的API:

try 
{
    some code 
}
catch(Exception ex)
{
    Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
}

两种解决方案之间有区别:

  • Raise方法将ELMAH过滤规则应用于异常。Log方法没有。
  • Raise 基于订阅,并且能够将一个异常记录到多个记录器中。
2020-05-19