ASP.NETにエラーメッセージを記録


エラーを記録するクラスを作成する
 
私たちがウェブサイトを開発して操作する過程で、エラーと失敗は避けられない.ASP.NET 2.0は追跡、instrumentation及びエラー処理機構を提供して、プログラム中の問題を検出及び修正する.
本稿では、簡単な処理で私たちのウェブサイトに記録されたエラーと異常を記録します.プログラムエラーが発生するたびに、ユーザを別のページにナビゲートする.同時に、エラーはサーバ上のテキストファイルに記録する.エラーが発生するたびに、私たちはログの形式で毎日記録します.こんなにたくさん話したので、コードを見てみましょう.
 
ステップ1:まず、エラーログファイルを格納するためのエラーフォルダを作成する.右クリックサイト>新規フォルダの作成このフォルダの名前を「Error」とします.サイトにWebがない場合configファイルを追加する場合は、1つ追加してください.右クリックサイト>新規アイテムの追加>Web.config.
 
ステップ2:エラー処理のコードを作成します.右クリックサイト>新規プロジェクトの追加>クラスの選択のみが必要です.クラス名を「ErrHandler.cs」に変更し、「追加」ボタンをクリックします.このように操作すると、このクラスのファイルを「App_Code」に保存するかどうかのダイアログボックスが開き、受け入れることを選択します.
 
手順3:ErrHandlerですclassはいくつかの機能を追加します.このクラスは、エラー情報を受け取る、テキストファイルにエラー情報を保存するためのものである.このようなテキストファイルを毎日作成する.既に同じファイル名が存在する場合、エラーメッセージがこのファイルに追加される.そうでない場合は、新しいファイルを作成し、エラー情報をファイルに書き込む.
コードは次のように見えます.
    
///
 Handles error by accepting the error message     
///
 Displays the page on which the error occured
    
public
 
static
 
void
 WriteError(
string
 errorMessage)    {        
try
        {            
string
 path 
=
 
"
~/Error/
"
 
+
 DateTime.Today.ToString(
"
dd-mm-yy
"

+
 
"
.txt
"
;            
if
 (
!
File.Exists(System.Web.HttpContext.Current.Server.MapPath(path)))            {                File.Create(System.Web.HttpContext.Current.Server.MapPath(path)).Close();            }            
using
 (StreamWriter w 
=
 File.AppendText(System.Web.HttpContext.Current.Server.MapPath(path)))            {                w.WriteLine(
"
\rLog Entry : 
"
);                w.WriteLine(
"
{0}
"
, DateTime.Now.ToString(CultureInfo.InvariantCulture));                
string
 err 
=
 
"
Error in: 
"
 
+
 System.Web.HttpContext.Current.Request.Url.ToString() 
+
                              
"
. Error Message:
"
 
+
 errorMessage;                w.WriteLine(err);                w.WriteLine(
"
__________________________
"
);                w.Flush();                w.Close();            }        }        
catch
 (Exception ex)        {            WriteError(ex.Message);        }    }
これが私たちのErrHandler類です.次に、このクラスの使用方法とPageレベル(Applicationレベル)でのエラーの処理方法を見てみましょう.
 
 
 
Tryで...Catch ... ブロックレコードエラー
 
デファルトでaspxでは、ツールボックスからbuttonコントロールを追加します.このbuttonをbtnErrorと命名し、値を「Throw Handled Exception」に設定.私たちは異常を投げ出します.catchブロックを定義すると、エラーが発生すると、Errorフォルダにスナップされて登録する.テキストファイルは当日の日付をファイル名とし、ファイルが存在しない場合、次のコードによって新しいファイルが作成する.
ボタンクリック操作コードは以下の通りです.
protected
 
void
 btnHandled_Click(
object
 sender, EventArgs e)    {        
try
        {            
throw
 
new
 Exception(
"
Sample Exception
"
);        }        
catch
 (Exception ex)        {            
//
 Log the error to a text file in the Error folder
            ErrHandler.WriteError(ex.Message);        }    }
プログラムを実行し、ボタンをクリックします.コードにエラーが処理され、異常が記録されているため、ボタンをクリックすると何も起こらないようです.プログラムを閉じて、Errorフォルダをリフレッシュすると、今日の日付でファイル名の新しいファイルが作成されます.異常は以下のように記録することに成功した.日付と時間はマシンで異なります.
Log Entry : 01/11/2008 23:33:46Error in: http://localhost:51087/ErrorHandling/Default.aspx. Error Message:Sample Exception__________________________
 
 
未処理エラー(Try...Catch...以外)は、どのように記録しますか?
アプリケーションレベルでエラー処理がないエラーをキャプチャし、ユーザーを別のページに指向する方法を見てみましょう.
エラー処理のないエラーをキャプチャするには、以下の作業を行うだけでよい.Globalを追加します.asaxファイル(右クリックプロジェクト>Add New Item>Glabal.asax).の中のApplication_Error()メソッドでは、次のコードを追加します.
 
 
void
 Application_Error(
object
 sender, EventArgs e)    {        
//
 Code that runs when an unhandled error occurs
        Exception objErr 
=
 Server.GetLastError().GetBaseException();        
string
 err 
=
 
"
Error in: 
"
 
+
 Request.Url.ToString() 
+
                          
"
. Error Message:
"
 
+
 objErr.Message.ToString();        
//
 Log the error
        ErrHandler.WriteError(err);            }
サーバを使用することに気づきました.GetLastError()関数はエラーをキャプチャする.エラー処理のないエラーが発生した場合、ユーザーを別のページにリダイレクトするには、Webを開く必要があります.configファイルをラベルにナビゲートしてログアウトします.コメントを削除すると、ラベルは次のようになります.

   <!--
The <customErrors> section enables configuration
of what to do if/when an unhandled error occurs
during the execution of a request. Specifically,
it enables developers to configure html error pages
to be displayed in place of a error stack trace.
-->

<customErrorsmode="RemoteOnly"defaultRedirect="GenericErrorPage.htm">
<errorstatusCode="403"redirect="NoAccess.htm" />
<errorstatusCode="404"redirect="FileNotFound.htm" />
</customErrors>

:
mode="RemoteOnly"tomode="On"
defaultRedirect="GenericErrorPage.htm" to defaultRedirect="ErrorPage.aspx"
:
<customErrorsmode="On"defaultRedirect="ErrorPage.aspx">
<errorstatusCode="403"redirect="NoAccess.htm" />
<errorstatusCode="404"redirect="FileNotFound.htm" />
</customErrors>

このプロファイルは、ユーザーをErrorPageという名前に導く.aspxのページこのエラーページを作成し、ユーザーにいくつかの情報を表示します.
右クリック>Add New Item>ErrorPageを作成します.aspxは、ページにメッセージを表示し、ユーザーにエラーが発生したことを示す.
この機能をテストするためにDefaultに戻ります.aspxは、新しいボタンを追加し、btnUnhandledと命名し、テキスト属性をThrow Unhandled Exceptionに設定する.「Divide By Zero」異常を使用します.それを処理しない.catchブロックが少なくなったことがわかりますエラーが発生すると、ユーザーは私たちのWebに従います.confgファイルに設定されているリダイレクトは「ErrorPage.aspx」です.
protected
 
void
 btnHandled_Click(
object
 sender, EventArgs e){      
int
 i 
=
 
9
;      
int
 j 
=
 
0
;      Respone.Write( i 
/
 j );}
このプログラムを実行するには「Throw Unhandled Exception」ボタンをクリックします.ユーザーが自動的にErrorページに指向されていることがわかります.エラーもErrorフォルダに記録する.