C# Elmah通过调用Raise(e)向记录的错误添加消息

C# Elmah通过调用Raise(e)向记录的错误添加消息,c#,.net,elmah,error-logging,C#,.net,Elmah,Error Logging,我对如何将消息添加到用ELMAH编程记录的错误中有点困惑 例如: Elmah所能做的似乎就是记录原始异常,我如何也记录自己的调试信息?您可以抛出一个新异常,将原始异常设置为内部异常,Elmah将记录这两个异常的消息: catch(Exception e) { Exception ex = new Exception("ID = 1", e); ErrorSignal.FromCurrentContext().Raise(ex); } 将显示 System.Exception:

我对如何将消息添加到用ELMAH编程记录的错误中有点困惑

例如:


Elmah所能做的似乎就是记录原始异常,我如何也记录自己的调试信息?

您可以抛出一个新异常,将原始异常设置为内部异常,Elmah将记录这两个异常的消息:

catch(Exception e)
{
    Exception ex = new Exception("ID = 1", e);
    ErrorSignal.FromCurrentContext().Raise(ex);
}
将显示

System.Exception: ID = 1 ---> System.NullReferenceException: Object reference not set to an instance of an object.

我发现我也可以做一些事情,比如:

Elmah.ErrorSignal.FromCurrentContext().Raise(new NotImplementedException("class      FbCallback.Page_Load() Request.Url= " + Request.Url));
记录我自己的信息。然后当我浏览到

http://localhost:5050/elmah.axd
我将我的消息视为类型NotImplementedException。
不是很漂亮,但很管用。

很好奇为什么Elmah没有额外的加薪信息。当试图修复某些错误时,上下文信息非常重要。您应该使用Exception.Data,但默认情况下elmah没有此功能。我添加到我使用的自定义版本中。我真的应该把代码贴到某个地方。我知道这是旧的,但我认为这不是100%正确。是的,您可以将此用于小细节,但如果您想要一个数据列表,这就是创建Exception.data的目的。例如,当抛出SQLException时,您会得到很多详细信息。我还加了这个。自己动手并不难。此外,在使用linq2sql时,还可以获得许多详细信息。
http://localhost:5050/elmah.axd