如何使用ELMAH和C#成功发送Web请求时记录文本消息

时间:2013-07-17 12:33:31

标签: elmah.mvc

如果网络请求成功返回状态代码200,任何人都可以帮助我了解如何使用ELMAH和C#记录自定义消息。

是否有类似于下面提到的方法:

Elmah.ErrorSignal.FromCurrentContext().Raise(ex);

记录自定义消息。

代码示例非常有用。

谢谢&问候, Santosh Kumar Patro

2 个答案:

答案 0 :(得分:3)

据我所知,ELMAH只处理异常(错误记录模块和处理程序),但是通过这个小技巧,你可以随时记录任何你想要的东西

请注意,这可能不是解决问题的唯一或最佳方法

ErrorSignal.FromCurrentContext().Raise(new NotImplementedException("blah blah blah whatever you want")); //ELMAH Signaling

答案 1 :(得分:0)

我觉得这个晚了很晚,但我发现这篇文章也想与Elmah发布一些“非例外”的信息。

我开始创建一个带有自定义名称的新Exception对象,该名称将位于我的数据库的Type字段中,但这并不是我想要的。然后我注意到Elmah想要一个Error对象。 Type字段为{ get; set; },所以我得到了答案。

我创建了一个静态助手类,以便在每次需要时减少代码:

public static class ElmahTools {

  public static Error LogHangFireInfo(string message) {
    var Result = new Error(new Exception(message));

    Result.Type = "Hangfire Info";

    return Result;
  }
}

在我要记录信息的类的顶部,我添加了以下内容:

private static readonly Elmah.ErrorLog ErrorRepo = Elmah.ErrorLog.GetDefault(null);

然后在我的代码中,我想要实际记录信息,我有以下内容:

ErrorRepo.Log(ElmahTools.LogHangFireInfo($"Job: {context.BackgroundJob?.Id} state has changed from {context.OldStateName} to {context.NewState.Name}"));

我最初只会这样做:

new Error { Type = "My Custom Info", Message = "Some message" };

但是由于TimeUtc没有被填写而失败了。所以我只是用信息创建一个相当空的Error并改变我需要的内容(例如Type。 )

希望这有助于某人。