次の方法で共有


トレース スイッチ

この記事は .NET Framework に固有のものです。 .NET 6 以降のバージョンを含む、.NET の新しい実装には適用されません。

トレース スイッチを使用すると、トレース出力を有効、無効、フィルター処理できます。 これらはコード内に存在し、.config ファイルを介して外部で構成できるオブジェクトです。 .NET Framework には、 BooleanSwitch クラス、 TraceSwitch クラス、 SourceSwitch クラスの 3 種類のトレース スイッチが用意されています。 BooleanSwitch クラスはトグル スイッチとして機能し、さまざまなトレース ステートメントを有効または無効にします。 TraceSwitchクラスとSourceSwitch クラスを使用すると、特定のトレース レベルに対してトレース スイッチを有効にして、そのレベルに対して指定されたTraceまたはTraceSourceメッセージと、そのレベルより下のすべてのレベルが表示されるようにすることができます。 スイッチを無効にした場合、トレース メッセージは表示されません。 これらすべてのクラスは、ユーザーが開発したスイッチと同様に、抽象 (MustInherit) クラス Switch から派生します。

トレース スイッチは、情報のフィルター処理に役立ちます。 たとえば、データ アクセス モジュール内のすべてのトレース メッセージを表示し、アプリケーションの残りの部分ではエラー メッセージのみを表示できます。 その場合は、データ アクセス モジュールに 1 つのトレース スイッチを使用し、アプリケーションの残りの部分には 1 つのスイッチを使用します。 .config ファイルを使用して適切な設定への切り替えを構成することで、受信したトレース メッセージの種類を制御できます。 詳細については、「 方法: トレース スイッチを作成、初期化、および構成する」を参照してください。

通常、展開されたアプリケーションはスイッチを無効にして実行されるため、ユーザーは、アプリケーションの実行時に画面に表示されたり、ログ ファイルがいっぱいになったりする無関係なトレース メッセージを多数観察する必要はありません。 アプリケーションの実行中に問題が発生した場合は、アプリケーションを停止し、スイッチを有効にして、アプリケーションを再起動できます。 その後、トレース メッセージが表示されます。

スイッチを使用するには、 最初に BooleanSwitch クラス、 TraceSwitch クラス、または開発者が定義したスイッチ クラスから switch オブジェクトを作成する必要があります。 開発者定義スイッチの作成の詳細については、.NET Framework リファレンスの Switch クラスを参照してください。 次に、switch オブジェクトを使用するタイミングを指定する構成値を設定します。 次に、さまざまなトレース (またはデバッグ) トレース メソッドで switch オブジェクトの設定をテストします。

トレース レベル

TraceSwitch を使用する場合は、追加の考慮事項があります。 TraceSwitch オブジェクトには、スイッチが少なくとも特定のレベルに設定されているかどうかを示すブール値を返す 4 つのプロパティがあります。

レベルを使用すると、受け取るトレース情報の量を、問題の解決に必要な情報のみに制限できます。 トレース出力に必要な詳細レベルを指定するには、トレース スイッチを適切なトレース レベルに設定して構成します。 エラーメッセージ、警告メッセージ、情報メッセージ、詳細トレースメッセージを受け取ることも、まったくメッセージを受け取らないこともできます。

各レベルに関連付けるメッセージの種類は、ユーザーが決定する必要があります。 通常、トレース メッセージの内容は各レベルに関連付ける内容によって異なりますが、レベル間の違いは決まります。 たとえば、レベル 3 (情報) で問題の詳細な説明を提供し、レベル 1 (エラー) でエラー参照番号のみを指定することができます。 アプリケーションで最適に動作するスキームを決定するのは、完全にユーザーの判断です。

これらのプロパティは、 TraceLevel 列挙の値 1 から 4 に対応します。 次の表に、 TraceLevel 列挙のレベルとその値を示します。

列挙値 整数値 表示されるメッセージの種類 (または指定された出力ターゲットに書き込まれる)
オフ 0 無し
エラー 1 エラー メッセージのみ
Warnung 2 警告メッセージとエラー メッセージ
情報 3 情報メッセージ、警告メッセージ、およびエラー メッセージ
詳細 4 詳細メッセージ、情報メッセージ、警告メッセージ、およびエラー メッセージ

TraceSwitch プロパティは、スイッチの最大トレース レベルを示します。 つまり、トレース情報は、指定されたレベルおよびすべての下位レベルに対して書き込まれます。 たとえば、 TraceInfotrue の場合、 TraceErrorTraceWarningtrue ですが、 TraceVerbosefalse になる可能性があります。

これらのプロパティは読み取り専用です。 TraceLevel プロパティが設定されると、TraceSwitch オブジェクトによって自動的に設定されます。 例えば次が挙げられます。

Dim myTraceSwitch As New TraceSwitch("SwitchOne", "The first switch")
myTraceSwitch.Level = TraceLevel.Info
' This message box displays true, because setting the level to
' TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(myTraceSwitch.TraceWarning.ToString())
' This messagebox displays false.
MessageBox.Show(myTraceSwitch.TraceVerbose.ToString())
System.Diagnostics.TraceSwitch myTraceSwitch =
   new System.Diagnostics.TraceSwitch("SwitchOne", "The first switch");
myTraceSwitch.Level = System.Diagnostics.TraceLevel.Info;
// This message box displays true, because setting the level to
// TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(myTraceSwitch.TraceWarning.ToString());
// This message box displays false.
MessageBox.Show(myTraceSwitch.TraceVerbose.ToString());

開発者が定義するスイッチ

BooleanSwitchTraceSwitch を提供するだけでなく、Switch クラスを継承し、カスタマイズされたメソッドを使用して基底クラスメソッドをオーバーライドすることで、独自のスイッチを定義できます。 開発者定義スイッチの作成の詳細については、.NET Framework リファレンスの Switch クラスを参照してください。

こちらも参照ください