1. ホーム
  2. c#

[解決済み】ELMAHを使用して手動でエラーをログに記録する方法

2022-04-03 08:04:25

質問

ELMAHを使って以下のようなことは可能でしょうか?

logger.Log(" something");

こんな感じでやってます。

try 
{
    // Code that might throw an exception 
}
catch(Exception ex)
{
    // I need to log error here...
}

この例外は処理されたため、ELMAHによって自動的にログに記録されることはありません。

解決方法は?

ELMAH 1.0から動作している、直接ログを書き込む方法です。

try 
{
    some code 
}
catch(Exception ex)
{
    Elmah.ErrorLog.GetDefault(HttpContext.Current).Log(new Elmah.Error(ex));
}

ELMAH 1.2 では、より柔軟な API が導入されました。

try 
{
    some code 
}
catch(Exception ex)
{
    Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
}

2つのソリューションには違いがあります。

  • Raise メソッドは、ELMAHのフィルタリングルールを例外に適用します。 Log メソッドは使用しません。
  • Raise はサブスクリプションベースで、1つの例外を複数のロガーに記録することができます。