如果网络请求成功返回状态代码200,任何人都可以帮助我了解如何使用ELMAH和C#记录自定义消息。
是否有类似于下面提到的方法:
Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
记录自定义消息。
代码示例非常有用。
谢谢&问候, Santosh Kumar Patro
答案 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
。 )
希望这有助于某人。