TraceSwitch クラス
アセンブリ: System (system.dll 内)
構文
解説
トレース スイッチを使用すると、メッセージの重要度に基づいてメッセージのフィルタ処理を行うことができます。TraceSwitch クラスは、スイッチのレベルをテストする TraceError、TraceWarning、TraceInfo、および TraceVerbose の各プロパティを提供します。Level プロパティは、スイッチの TraceLevel を取得または設定します。
アプリケーション構成ファイルで TraceSwitch のレベルを設定し、構成した TraceSwitch レベルをアプリケーションで使用できます。または、TraceSwitch をコード内に作成し、レベルを直接設定してコードの特定のセクションをインストルメントすることもできます。
TraceSwitch を構成するには、アプリケーションの名前に対応した構成ファイルを編集します。このファイルでは、スイッチの追加または削除、スイッチの値の設定、アプリケーションで以前設定されたすべてのスイッチのクリアを実行できます。構成ファイルの書式は次の例のようになります。
<configuration> <system.diagnostics> <switches> <add name="mySwitch" value="1" /> </switches> </system.diagnostics> </configuration>
この構成セクションで TraceSwitch を定義するには、DisplayName を mySwitch に設定し、Level を 1 に設定します。これは列挙値 TraceLevel.Error に対応します。アプリケーション内で、構成したスイッチ レベルを使用するには、次の例に示すように TraceSwitch を同じ名前で作成します。
Private Shared appSwitch As New TraceSwitch("mySwitch", _ "Switch in config file") Public Shared Sub Main(ByVal CmdArgs() As String) '... Console.WriteLine("Trace switch {0} configured as {1}", _ appSwitch.DisplayName, appSwitch.Level.ToString()) If appSwitch.TraceError Then '... End If End Sub
private static TraceSwitch appSwitch = new TraceSwitch("mySwitch", "Switch in config file"); public static void Main(string[] args) { //... Console.WriteLine("Trace switch {0} configured as {1}", appSwitch.DisplayName, appSwitch.Level.ToString()); if (appSwitch.TraceError) { //... } }
既定では、スイッチ Level プロパティは、構成ファイルで指定した値を使用して設定されます。TraceSwitch コンストラクタが構成ファイルの初期スイッチ設定を検出できない場合は、新しいスイッチの Level が既定の TraceLevel.Off に設定されます。
スイッチを使用するには、トレースまたはデバッグを有効にする必要があります。次の構文はコンパイラに固有です。C# または Visual Basic 以外のコンパイラを使用する場合は、使用するコンパイラのドキュメントを参照してください。
-
C# でデバッグを有効にするには、コードのコンパイル時に /d:DEBUG フラグをコンパイラのコマンド ラインに追加するか、#define DEBUG をファイルの最上部に挿入します。Visual Basic では、コンパイラのコマンド ラインに /d:DEBUG=True フラグを追加します。
-
C# でトレースを有効にするには、コードのコンパイル時に /d:TRACE フラグをコンパイラのコマンド ラインに追加するか、#define TRACE をファイルの最上部に挿入します。Visual Basic では、コンパイラのコマンド ラインに /d:TRACE=True フラグを追加します。
メモ |
---|
これらのデバッグおよびトレースのコンパイラ スイッチは、TraceSwitch クラスを単独で使用する場合には必要ありません。これらが必要になるのは、Trace クラスまたは Debug クラスの条件付きコンパイルされたメソッドと組み合わせて使用する場合だけです。 |
アプリケーション導入の詳細については、Debug および Trace のトピックを参照してください。トレース スイッチの構成と使用の詳細については、「トレース スイッチ」を参照してください。
新しい TraceSwitch を作成し、スイッチを使用してエラー メッセージを出力するかどうかを決定するコード例を次に示します。スイッチはクラス レベルで作成されます。MyMethod は、Level プロパティが TraceLevel.Error 以上に設定されている場合に最初のエラー メッセージを書き込みます。ただし、MyMethod は、Level が TraceLevel.Verbose 未満の場合は第 2 のエラー メッセージを書き込みません。
' Class-level declaration. ' Create a TraceSwitch to use in the entire application. Private Shared mySwitch As New TraceSwitch("General", "Entire Application") Public Shared Sub MyMethod() ' Write the message if the TraceSwitch level is set to Error or higher. If mySwitch.TraceError Then Console.WriteLine("My error message.") End If ' Write the message if the TraceSwitch level is set to Verbose. If mySwitch.TraceVerbose Then Console.WriteLine("My second error message.") End If End Sub Public Shared Sub Main() ' Run the method that prints error messages based on the switch level. MyMethod() End Sub
//Class-level declaration. /* Create a TraceSwitch to use in the entire application.*/ static TraceSwitch mySwitch = new TraceSwitch("General", "Entire Application"); static public void MyMethod() { // Write the message if the TraceSwitch level is set to Error or higher. if(mySwitch.TraceError) Console.WriteLine("My error message."); // Write the message if the TraceSwitch level is set to Verbose. if(mySwitch.TraceVerbose) Console.WriteLine("My second error message."); } public static void Main(string[] args) { // Run the method that prints error messages based on the switch level. MyMethod(); }
// Class-level declaration. /* Create a TraceSwitch to use in the entire application.*/ private: static TraceSwitch^ mySwitch = gcnew TraceSwitch( "General", "Entire Application" ); public: static void MyMethod() { // Write the message if the TraceSwitch level is set to Error or higher. if ( mySwitch->TraceError ) Console::WriteLine( "My error message." ); // Write the message if the TraceSwitch level is set to Verbose. if ( mySwitch->TraceVerbose ) Console::WriteLine( "My second error message." ); } static void main() { // Run the method that prints error messages based on the switch level. MyMethod(); }
// Class-level declaration. /* Create a TraceSwitch to use in the entire application. */ private static TraceSwitch mySwitch = new TraceSwitch("General", "Entire Application"); public static void MyMethod() { //Write the message if the TraceSwitch level is set to Error or higher. if (mySwitch.get_TraceError()) { Console.WriteLine("My error message."); } // Write the message if the TraceSwitch level is set to Verbose. if (mySwitch.get_TraceVerbose()) { Console.WriteLine("My second error message."); } } //MyMethod public static void main(String[] args) { // Run the method that prints error messages based on the switch level. MyMethod(); } //main
System.Diagnostics.Switch
System.Diagnostics.TraceSwitch
プラットフォーム
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
- TraceSwitch クラスのページへのリンク