特定のシナリオで失敗するライブ Web アプリケーションがあり、ローカルでは正常に動作します。リモート デバッグの設定がなく、コード内のいくつかの変数の値を確認したいと考えています。これらの値を表示するためにコードをログに記録/電子メールで送信/デバッグする最速の方法は何ですか?
明確にするために、スローされるエラー/例外はありません。何かが異なり、アプリケーションが予期しない結果をもたらす原因となっています。
前もって感謝します!
特定のシナリオで失敗するライブ Web アプリケーションがあり、ローカルでは正常に動作します。リモート デバッグの設定がなく、コード内のいくつかの変数の値を確認したいと考えています。これらの値を表示するためにコードをログに記録/電子メールで送信/デバッグする最速の方法は何ですか?
明確にするために、スローされるエラー/例外はありません。何かが異なり、アプリケーションが予期しない結果をもたらす原因となっています。
前もって感謝します!
最も簡単な方法は、 Global.asaxファイル内の Application_Error イベントにログを実装することです。Global.asax ファイルがない場合は、VS New File ウィザードを使用してファイルを作成するだけで、そのイベントが処理されます。
エラーのスコープでローカル変数に到達するのには役立ちませんが、そこからグローバル変数をログに記録し、少なくともエラーの内容に関するフィードバックを得ることができます。
編集: あなたのコメントに応えて、トレース データを分析可能なファイルに出力することをお勧めします。私はこれを自分で試したことはありませんが、推奨されているのを見ました。web.config に、次のようにTraceListenerと呼ばれるものを追加します。
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add name="TestTracer"
type="System.Diagnostics.TextWriterTraceListener, System,
Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
initializeData="<app root directory>\Asptesttrace.log" />
</listeners>
</trace>
</system.diagnostics>
あなたはそれをローカルでいじる必要があるでしょう、私は確信しています。たとえば、トレースがクライアントに表示されないようにします (これには、Trace クラスを使用してトレースをオンまたはオフにしたり、書き込み先のストリームを変更したりする必要がある場合があります)。
いつでもローカルのみのデバッグをオンにしてから、サーバーにリモートでオンにしてアプリを使用できます。
問題を確認するための最速の方法かもしれません。
迅速なログ記録のために、ASP.NET トレース ( http://www.4guysfromrolla.com/webtech/081501-1.shtml ) を試してみます。コードに Trace.Write() 呼び出しを追加する必要があります。これにより、ライブ ページ自体でログを確認できます (参照するだけで)。
よりリッチなロギングを行うには、log4net を使用できます (「log4net を使用して」とググるだけで、便利なリンクがたくさん表示されます)。これは簡単に構成でき、電子メールでログを送信できます (これは驚くほど便利です!)。
それが役立つことを願っています。
JoshJordan のコメントに加えて、Post Sharpを使用して、メソッドに入るときと出ないときはいつでもトレースし、どのような値が入ってくるかを確認できる場合があります...