29

ASP.NET アプリケーションでエラーをログに記録する最良の方法を探しています。アプリケーションでエラーが発生したときに、例外と現在のリクエストに関する詳細情報が記載された電子メールを受信できるようにしたいと考えています。

私の会社では、Global.asax Application_Error 内のすべてをキャッチする独自の ErrorMailer を使用していました。「OK」でしたが、あまり柔軟でも設定可能でもありませんでした。

最近、NLog に切り替えました。エラーのさまざまなターゲットを定義し、それらをフィルター処理し、バッファーすることができます (まだ試していません)。とても良い改善です。

しかし最近、この目的のために .Net フレームワークに名前空間全体があることを発見しました: System.Web.Managementであり、web.configのhealthMonitoringセクションで構成できます。

.Net ヘルス モニタリングを使用したことがありますか? エラーログの解決策は何ですか?

4

8 に答える 8

30

私はエルマを使っています。これにはいくつかの非常に優れた機能があり、ここにCodeProjectの記事があります。StackOverflow チームも elmah を使用していると思います。

于 2008-08-15T04:34:49.817 に答える
9

致命的なエラーの詳細を電子メールで送信するように構成されたLog4netを使用しています。また、すべてをログ ファイルに記録するように設定されているため、問題をデバッグするときに非常に役立ちます。もう 1 つの利点は、その標準機能が目的の機能を果たさない場合、必要に応じてログ情報を処理できるカスタム アペンダーを簡単に作成できることです。

そうは言っても、標準のlog4netメールに含まれるよりも少し多くの情報(ページ、セッション変数、Cookie、httpサーバー変数など)を含むhtmlメールを送信するカスタムエラーハンドラーと組み合わせてこれを使用しています.

これらは両方とも、例外が log4net で致命的な例外としてログに記録される Application_OnError イベントに結び付けられ (これにより、指定された電子メール アドレスに電子メールで送信されます)、カスタム エラー ハンドラーを使用して処理されます。

Elmahについては、Coding Horror のブログ エントリであるCrash Responsivelyで初めて耳にしました。

于 2008-08-15T06:31:07.070 に答える
2

Enterprise Library の Logging オブジェクトを使用しています。さまざまな種類のログ (フラット ファイル、電子メール、および/またはデータベース) を使用できます。これは非常にカスタマイズ可能であり、ロギングの構成のために web.config を更新するための非常に優れたインターフェイスを備えています。通常、Global.asax の On Error からログを呼び出します。

ここにMSDNへのリンクがあります

于 2008-08-15T06:11:57.937 に答える
0

EnterpriseLibrary.ExceptionHandling.Logging を使用します。ロギングを完全に制御するだけでなく、構成内でスロー/非スローの決定も制御できるため、log4net よりも少し優れています。

于 2015-08-09T16:52:46.750 に答える
0

私たちが作成した独自のカスタム ログ ユーティリティを使用します。必要な場所ならどこでも独自にロギングを実装する必要があります。ただし、例外だけでなく、より多くのものをキャプチャすることもできます。

たとえば、コードは次のようになります。

Try
  Dim p as New Person()
  p.Name = "Joe"
  p.Age = 30
Catch ex as Exception
  Log.LogException(ex,"Err creating person and assigning name/age")
  Throw ex
End Try

このようにして、ロガーは必要なすべての情報を SQL データベースに書き込みます。特定のエラーまたは頻繁に発生するエラーを探すために、DB レベルで電子メール アラートを設定しています。エラーの原因を正確に特定するのに役立ちます。

これはまさにあなたが探しているものではないかもしれません。Global.asax の使用に似た別のアプローチは、PostSharpを使用したAOPのようなコード インジェクション手法です。これにより、すべてのメソッドの最初と最後、またはすべての例外にカスタム コードを挿入できます。これは興味深いアプローチですが、パフォーマンスのオーバーヘッドが大きくなる可能性があると思います。

于 2008-08-15T04:26:53.653 に答える
0

私のチームはApache のlog4netを使用しています。かなり軽量でセットアップも簡単です。何よりも、web.config ファイルから完全に構成できるため、コードのセットアップにフックがあれば、web.config ファイルを変更するだけで、ログ記録の方法を完全に変更できます。

log4net は、データベース、電子メール、テキスト ファイル、Windows イベント ログなど、さまざまな場所へのログ記録をサポートしています。コードのどの部分でエラーが発生したかを特定します。次に、そのコードの責任者を特定し、データベースにアクセスしてより詳細な情報を取得できます。

于 2008-08-15T04:33:02.613 に答える
0

最近、NLog を使用して asp.net Web サービスを構築しました。これは、すべてのデスクトップ アプリで使用しています。Visual Studio でデバッグしているときはログが正常に機能しますが、IIS に切り替えるとすぐにログ ファイルが作成されません。理由はまだわかりませんが、解決策を探す必要があるという事実により、asp.netのニーズに合わせて別のことを試してみたいと思います!

于 2008-09-15T17:22:49.150 に答える