Web リクエストが成功してステータス コード 200 が返された場合に、ELMAH と C# を使用してカスタム メッセージをログに記録する方法を教えてください。
以下のような方法はありますか :
Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
カスタム メッセージをログに記録します。
コードサンプルは非常に役立ちます。
よろしくお願いいたします。 サントッシュ・クマール・パトロ
Web リクエストが成功してステータス コード 200 が返された場合に、ELMAH と C# を使用してカスタム メッセージをログに記録する方法を教えてください。
以下のような方法はありますか :
Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
カスタム メッセージをログに記録します。
コードサンプルは非常に役立ちます。
よろしくお願いいたします。 サントッシュ・クマール・パトロ
私の知る限り、ELMAH は例外 (エラー ログ モジュールとハンドラー) のみを処理しますが、このちょっとしたトリックを使えば、必要なときにいつでも必要なものをログに記録できます。
これが問題を解決するための唯一または最良のアプローチではない場合があることに注意してください
ErrorSignal.FromCurrentContext().Raise(new NotImplementedException("blah blah blah whatever you want")); //ELMAH Signaling
私はこれにかなり遅れて気づきましたが、Elmah にも「例外ではない」情報を投稿したいというこの記事に出くわしました。
Exception
カスタム名で新しいオブジェクトを作成することから始めました。その名前はType
データベースのフィールドにありますが、それはまさに私が望んでいたものではありませんでした。すると、エルマが物を欲しがっていることに気づきました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
これが誰かに役立つことを願っています。