2

Web リクエストが成功してステータス コード 200 が返された場合に、ELMAH と C# を使用してカスタム メッセージをログに記録する方法を教えてください。

以下のような方法はありますか :

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データベースのフィールドにありますが、それはまさに私が望んでいたものではありませんでした。すると、エルマが物を欲しがっていることに気づきました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た。ErrorType

これが誰かに役立つことを願っています。

于 2017-05-31T14:49:26.770 に答える