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ファイルをラベルにナビゲートしてログアウトします.コメントを削除すると、ラベルは次のようになります.
このプロファイルは、ユーザーを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フォルダに記録する.
私たちがウェブサイトを開発して操作する過程で、エラーと失敗は避けられない.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フォルダに記録する.