例外を発生させずに .NET でスタック トレースをログに記録する
アプリケーションをデバッグするときに、ソースを特定するために現在のスタック トレースをキャプチャすると便利ですあらゆる問題について。ただし、例外がスローされないシナリオでは、スタック トレースのログ記録が困難になる可能性があります。
System.Diagnostics.StackTrace
ありがたいことに、.NET System.Diagnostics namespace は、現在のスタック トレースを出力するためのソリューションを提供します。 System.Diagnostics.StackTrace クラスを使用すると、例外が存在しない場合でも、コードの現在の時点でスタック トレースをキャプチャできます。
このクラスを使用するには、単にStackTrace のインスタンスを作成し、その GetFrame メソッドを呼び出して、目的のスタック フレームを取得します。次のコード スニペットは、現在のスタック トレースをコンソールに記録する方法を示しています。
using System.Diagnostics; public class StackTraceDemo { public void ExecuteMethod() { StackTrace t = new StackTrace(); foreach (StackFrame frame in t.GetFrames()) { Console.WriteLine(frame.GetMethod().Name); } } }
この例では、GetFrame メソッドは StackFrame オブジェクトの配列を返します。現在のスレッドのスタックを表します。各 StackFrame には、名前、行番号、ファイル パスなど、対応するスタック レベルで実行されていたメソッドに関する情報が含まれます。
Logging Solutions
また、NLog、log4net、Microsoft のパターンとプラクティスのエンタープライズ ライブラリなどのログ ソリューションを利用して、同様の機能を実現することもできます。これらのライブラリは、カスタマイズ可能なログ レベル、さまざまなログ ターゲット (ファイル、データベースなど) のサポート、構造化ログなどの追加機能を提供します。
結論
System.Diagnostics.StackTrace クラスまたはログ ソリューションでは、例外がない場合でも現在のスタック トレースを簡単にログに記録できます。投げられる。これは、デバッグの目的や、アプリケーションの実行フローについての洞察を得るのに非常に貴重です。
以上が.NET アプリケーションのスタック トレースを例外なく記録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。