troushoo

ELMAHでASP.NETアプリの例外をログ

ELMAHを使用するとASP.NETアプリのYSOD(Yellow Screen of Death)の時の詳細な情報を取得することができます。YSODとはASP.NETアプリでハンドルされない例外の発生のことをいい、以下のような黄色の背景が含まれた画面が表示されます。

ELMAHの利用は簡単でソースコードの再コンパイルの必要なく導入することも可能です。

ELMAHとは?
ASP.NETアプリのYSODの時のスタックやYSODの画面といったトラブルシューティングに必要な情報をログするためのDLLです。また、YSOD時にメールを送ったりすることも可能です。
エラー情報は以下のようなものに保存することができます。
・Microsoft SQL Server
・Oracle
・SQLite
・Microsoft Access
・Loose XML files
・メモリ
・SQL Server Compact Edition
・MySQL
・PostgreSQL
ここでは導入が手軽なASP.NET Web アプリケーションのYSODのデータをメモリにを保存する例を示します。

今回使用するWebサイト
以下のようなサイトで、"クリックすると例外が発生します"をクリックすると0で割る計算を行い例外を発生させるサイトを利用します。

ELMAHの使用例
1. ELMARをサイトからダウンロードします。
今回は環境がx64環境のため、Current ReleasesのBinaries(x64)をクリックして、2011/12/26現在最新バージョンである1.2 SP1をダウンロードしました。

2. ダウンロードしたZIPを解凍し、ELMAH-1.2-sp1-bin-x64\bin\net-2.0\ReleaseにあるElmah.dllをサイトのbinフォルダ(例:C:\inetpub\wwwroot\mysite\myelmah\bin)にコピーします。

3. HTTP HandlerとHTTP Moduleを登録するためにWeb.configを修正します。
HTTP Handlerの登録は、今回はIIS7.5(Windows 7)で統合モードを使用しているので以下のようになります。(そのほかの環境場合はMSDN(http://msdn.microsoft.com/en-us/library/46c5ddfy.aspx)を参照ください。)

<handlers>
    <add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" preCondition="integratedMode" type="Elmah.ErrorLogPageFactory, Elmah"/>
</handlers>

Http Moduleの登録は以下のようになります。

<modules runAllManagedModulesForAllRequests="true">
  <add name ="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
</modules>

上記2つを合わせて、<system.webServer>は以下のようになります。

<system.webServer>
   <handlers>
    <add name="Elmah" verb="POST,GET,HEAD" path="elmah.axd" preCondition="integratedMode" type="Elmah.ErrorLogPageFactory, Elmah"/>
   </handlers>
   <modules runAllManagedModulesForAllRequests="true">
     <add name ="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
   </modules>
</system.webServer>

4. サイトに移動し、"クリックすると例外が発生します"をクリックします。

5. ブラウザでYSODが発生したことを確認します。

6. ELMAHのサイト(今回はhttp://loclhost:8080/myelmah/elmah.axd)に移動します。
発生した例外が確認できます。

7. Detailsをクリックすると例外発生時のスタックの状況等詳細な情報が確認できます。

8. Original ASP.NET error pageをクリックするとYSODの画面も確認できます。

  1. 2011/12/28(水) 16:01:20|
  2. .NET
  3. | トラックバック:0
  4. | コメント:0
<<netshでネットワークトレース | ホーム | [Psscor2/Psscor4]!DumpThreadConfig>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
https://troushoo.blog.fc2.com/tb.php/23-d55c3f34
この記事にトラックバックする(FC2ブログユーザー)

スポンサーリンク

最新記事

月別アーカイブ

カテゴリ

ツール (114)
ネットワーク (54)
Wireshark (48)
AD (36)
Linux (45)
WinDbg (46)
SOS・Psscor2/Psscor4 (25)
Visual Studio (56)
Tips (32)
コンテナ (4)
Azure (17)
.NET (24)
Python (9)
Java (5)
SQL (6)
事例 (1)
英語 (1)
About Me (1)
未分類 (0)

全記事表示リンク

全ての記事を表示する

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する