次の方法で共有


TraceSwitch クラス

定義

コードを再コンパイルせずにトレースとデバッグ出力を制御するためのマルチレベル スイッチを提供します。

public ref class TraceSwitch : System::Diagnostics::Switch
public class TraceSwitch : System.Diagnostics.Switch
type TraceSwitch = class
    inherit Switch
Public Class TraceSwitch
Inherits Switch
継承
TraceSwitch

次のコード例では、新しい TraceSwitch を作成し、スイッチを使用してエラー メッセージを出力するかどうかを判断します。 スイッチはクラス レベルで作成されます。 Level プロパティが TraceLevel.Error 以上に設定されている場合、MyMethod は最初のエラー メッセージを書き込みます。 ただし、LevelTraceLevel.Verbose未満の場合、MyMethod は 2 番目のエラー メッセージを書き込むことはありません。

   // 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.*/
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 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

注釈

トレース スイッチを使用すると、重要度に基づいてメッセージをフィルターで除外できます。 TraceSwitch クラスは、スイッチのレベルをテストするための TraceErrorTraceWarningTraceInfo、および TraceVerbose プロパティを提供します。 Level プロパティは、スイッチの TraceLevelを取得または設定します。

コードに TraceSwitch を作成し、コードの特定のセクションをインストルメント化するようにレベルを直接設定できます。

.NET Framework アプリでのみ、アプリケーション構成ファイルを使用して TraceSwitch のレベルを設定し、アプリケーションで構成された TraceSwitch レベルを使用することもできます。 アプリケーション構成ファイルでは、スイッチの追加または削除、スイッチの値の設定、またはアプリケーションによって以前に設定されたすべてのスイッチのクリアを行うことができます。 構成ファイルは、次の例のように書式設定する必要があります。

<configuration>  
  <system.diagnostics>  
    <switches>  
      <add name="mySwitch" value="1" />  
    </switches>  
  </system.diagnostics>  
</configuration>  

この構成セクションでは、DisplayNamemySwitchに設定し、Level を 1 に設定した TraceSwitch を定義 TraceLevel.Error列挙値に対応します。

手記

テキストを使用して、スイッチの値を指定することもできます。 たとえば、BooleanSwitchtrue、または列挙値を表すテキスト (TraceSwitchError など)。 行 <add name="mySwitch" value="Error" /> は、<add name="mySwitch" value="1" />と同じです。

アプリケーションでは、次の例に示すように、同じ名前の TraceSwitch を作成することで、構成済みのスイッチ レベルを使用できます。

private:
    static TraceSwitch^ appSwitch = gcnew TraceSwitch("mySwitch",
        "Switch in config file");

public:
    static void Main(array<String^>^ args)
    {
        //...
        Console::WriteLine("Trace switch {0} configured as {1}",
        appSwitch->DisplayName, appSwitch->Level.ToString());
        if (appSwitch->TraceError)
        {
            //...
        }
    }
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)
    {
        //...
    }
}
Private Shared appSwitch As new TraceSwitch("mySwitch", _
    "Switch in config file")

Public Shared Sub Main(args As String())
    '...
    Console.WriteLine("Trace switch {0} configured as {1}",
    appSwitch.DisplayName, appSwitch.Level.ToString())
    If appSwitch.TraceError = True  Then
        '...
    End If
End Sub

.NET Core および .NET 5 以降のアプリでは、新しいスイッチの Level は既定で TraceLevel.Offに設定されます。

.NET Framework アプリでは、スイッチ 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 メソッドと組み合わせてのみ必要です。

アプリケーションのインストルメント化の詳細については、「DebugTrace」を参照してください。 トレース スイッチの構成と使用の詳細については、「トレース スイッチの」を参照してください。

手記

パフォーマンスを向上させるために、クラス TraceSwitch メンバーを static できます。

コンストラクター

TraceSwitch(String, String, String)

指定した表示名、説明、およびスイッチの既定値を使用して、TraceSwitch クラスの新しいインスタンスを初期化します。

TraceSwitch(String, String)

指定した表示名と説明を使用して、TraceSwitch クラスの新しいインスタンスを初期化します。

プロパティ

Attributes

アプリケーション構成ファイルで定義されているカスタム スイッチ属性を取得します。

(継承元 Switch)
DefaultValue

コンストラクターで割り当てられた既定値を取得します。

(継承元 Switch)
Description

スイッチの説明を取得します。

(継承元 Switch)
DisplayName

スイッチを識別するために使用する名前を取得します。

(継承元 Switch)
Level

スイッチで許可されるメッセージを決定するトレース レベルを取得または設定します。

SwitchSetting

このスイッチの現在の設定を取得または設定します。

(継承元 Switch)
TraceError

スイッチがエラー処理メッセージを許可するかどうかを示す値を取得します。

TraceInfo

スイッチが情報メッセージを許可するかどうかを示す値を取得します。

TraceVerbose

スイッチがすべてのメッセージを許可するかどうかを示す値を取得します。

TraceWarning

スイッチが警告メッセージを許可するかどうかを示す値を取得します。

Value

スイッチの値を取得または設定します。

(継承元 Switch)

メソッド

Equals(Object)

指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetSupportedAttributes()

スイッチでサポートされているカスタム属性を取得します。

(継承元 Switch)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Objectの簡易コピーを作成します。

(継承元 Object)
OnSwitchSettingChanged()

このスイッチのレベルを更新して修正します。

OnValueChanged()

SwitchSetting プロパティを、Value プロパティに相当する整数に設定します。

OnValueChanged()

Value プロパティが変更されたときに呼び出されます。

(継承元 Switch)
Refresh()

トレース構成データを更新します。

(継承元 Switch)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象

こちらもご覧ください