2

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

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

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

记录自定义消息。

代码示例将非常有用。

谢谢和问候, 桑托什·库马尔·帕特罗

4

2 回答 2

3

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

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

ErrorSignal.FromCurrentContext().Raise(new NotImplementedException("blah blah blah whatever you want")); //ELMAH Signaling
于 2013-08-16T21:38:29.870 回答
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。)

希望这可以帮助某人。

于 2017-05-31T14:49:26.770 回答