ASP.NETアプリケーションで、Visual Basicで例外を記録するための最良の方法は何ですか?

asp.net logging vb.net

私はVisual Basicを使用して書かれたASP.NET Webアプリケーションに取り組んでいます、そして、私は得ているエラーメッセージを追跡しようとしています。

エラーは本番環境のサーバーでのみ発生し、開発環境では発生しないため、例外をファイル(またはイベントログ)に記録するようにしたいのです。そこ…​)。

どのようにこれを行うかに関してベストプラクティスに関して誰かが何か考えを持っていますか?

乾杯

  2  0


ベストアンサー

それが「ベストプラクティス」であるかどうかはわかりませんが、最も一般的な方法は log4netを使用することです。

4


http://logging.apache.org/log4net/index.html[log4net]またはhttp://msdn.microsoft.com/ja-jp/library/dd139916.aspx[Enterprise Library Logging]を使用してください。 未処理のエラーをすべてログに記録するhttpモジュールも追加します(404エラーを除外)。

グローバルエラーハンドラを実行するときは、おそらく既にエラーを記録したことを知るための何らかの方法を開発したいと思うでしょう。 これは、エラーの原因により近いエラーをログに記録したい場合に起こります。

私の場合、エラーをログに記録するときは、例外としてデータコレクションにアイテムを追加します。 そして、私のグローバルエラーハンドラは、すべての例外オブジェクトを調べて、ログに記録されていないことを確認します。

2


ASP.NET 2.0以上を実行している場合、最善のことは何もしないことです。 既定では、ASP.NET Health Monitoringは例外をアプリケーションイベントログに記録します。 eventvwr.exeを使用して、「ASP.NET」からの警告を探してください。 それが記録する情報は非常に完全です。

「何もしない」と言った場合、ログに記録するだけであれば例外をキャッチしません。 必要に応じてカスタムエラーページを設定できますが、例外が最上位で捕捉されないようにしてください。

1


まだ誰も Elmahを挙げていません

http://code.google.com/p/elmah/[Elmah]は、ASP.NETを使用したエラーログ記録用に特別に構築されています。それに関する優れた点の1つは、ASP.NETアプリケーションに追加できることですDLLをBinディレクトリにドロップし、web.configファイルを編集します。 コードを変更する必要はありません。

1


メッシー:それが出たとき、それをキャッチし(できるとしたら?)、できる限り多くのデータをPAGEにドロップします。 ユーザーがそれを見ることができないように、それをHTMLコメントに入れてください。 何かのようなもの:

__
lblError.Text =(フォーマットされた例外情報をここに入力);

< ! -<asp:label id = lblError />→
__

ほとんど面倒なことですが、Trace.WriteLineを調べてください。 ASP.NETでトレースを有効にすると、特定のページ(_trace.axd?)に移動して、そのページの読み込みに関するすべてのメッセージのダンプを取得できます。 私は実際には使っていませんが、うまくいきます。

少し手間がかかりません(これは一時的なものと思われるため):Trace.WriteLineを使って出力し、物理的にアクセスできる場合はサーバー上で(microsoftから)debugviewを実行します。 その後、このデバッグ出力を取り込むことができます(これに関するコアのwin32 APIはOutputDebugStringです – 私は
.net call is Debug.WriteLine)

より良い:Log4Net。 どこにでも使えるように設定してください。 ほとんどの場合は “ERROR”にしますが、この場合は解決策が見つかるまで “DEBUG”を使用します。

私は3、4に行きます。 または今すぐ3、次に次回コードベースを少しクリーンアップするときに4になります。

🙂

0


あなたがそのサイトのglobal.asaxを手に入れることができるならば – それからGlobal.asaxの ‘Application_Error’セクションでこのようなことをしてください。

exとして新規の例外として使用()ex = Server.GetLastError()。GetBaseException()としての新規使用汎用関数ASendEmailFunction(ex.Message.ToString()

これは、アプリケーションのすべてのエラーを取得し、あなたにすべての詳細を送信します – あなたはちょうどあなたに内容を記載したEメールを送信するASendEmailFunction()を作成する必要があります。

(あなたはこれよりももっとうまくやることができますが、私はこのボックスに直接これを入力します)

0


ロギングに使用される最も一般的なライブラリは、エンタープライズライブラリロギングブロックまたはlog4Netです。 – エンタープライズライブラリロギングブロックの記事:http://www.codeproject.com/KB/architecture/GetLoggingWithEntLib.aspx -Log4Net:http://www.ondotnet .com / pub / a / dotnet / 2003/06/16 / log4net.html

乾杯

0


タイトルとURLをコピーしました