次の方法で共有


トレース スイッチ

トレース スイッチを使用すると、トレース出力を有効化、無効化、およびフィルター処理できます。 トレース スイッチは、コードに配置されるオブジェクトで、.config ファイルによって外部的に設定できます。 .NET Framework に用意されたスイッチには、BooleanSwitch クラス、TraceSwitch クラス、および SourceSwitch クラスの 3 種類があります。 BooleanSwitch クラスは、トグル スイッチとして機能し、各種のトレース ステートメントを有効にしたり無効にしたりできます。 TraceSwitch クラスと SourceSwitch クラスを使用すると、特定のトレース レベルごとにトレース スイッチを有効にできます。これにより、該当するレベルおよびそれ以下のすべてのレベルに対して指定された Trace メッセージまたは TraceSource メッセージが表示されます。 スイッチを無効にした場合、トレース メッセージは表示されません。 すべてのクラスは、他のユーザー定義のスイッチと同様に、どちらも Switch という抽象 (MustInherit) クラスから派生したクラスです。

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

一般に、配置されたアプリケーションはスイッチが無効にされた状態で実行されるため、ユーザーにとって意味のないトレース メッセージが画面に表示されたり、実行ごとにログ ファイルが増大することはありません。 アプリケーションの実行時に問題が発生した場合は、アプリケーションを中断し、スイッチを有効にしてからアプリケーションを再起動します。 これにより、トレース メッセージが表示されるようになります。

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

トレース レベル

TraceSwitch を使用するときには、いくつかの考慮事項があります。 TraceSwitch オブジェクトには、スイッチを特定のレベル以上として設定するかどうかを示す Boolean 値を返す、4 つのプロパティがあります。

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

各レベルに関連付けるメッセージの種類は、すべて開発者が指定します。 トレース メッセージの内容は、通常、各レベルに関連付けた内容に依存しますが、レベルごとに動作の違いを設定できます。 たとえば、レベル 3 (Info) の問題については詳細な説明を提供するが、レベル 1 (Error) の問題についてはエラー参照番号だけを提供する場合があります。 アプリケーションで最適な動作を得ることができるスキームは、独自に判断してください。

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

列挙値

整数値

表示されるメッセージ (または指定された出力対象に書き込まれるメッセージ) の種類

Off

0

なし

Error

1

エラー メッセージのみ

警告

2

警告メッセージとエラー メッセージ

Info

3

通知メッセージ、警告メッセージ、およびエラー メッセージ

Verbose

4

詳細メッセージ、情報メッセージ、警告メッセージ、およびエラー メッセージ

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

これらのプロパティは読み取り専用です。 TraceSwitch オブジェクトは、TraceLevel プロパティの設定時にこれらのプロパティを自動的に設定します。 次に例を示します。

Dim myTraceSwitch As New TraceSwitch("SwitchOne", "The first switch")
myTraceSwitch.Level = TraceLevel.Info
' This message box displays true, becuase 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, becuase 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());
System.Diagnostics.TraceSwitch myTraceSwitch =
   new System.Diagnostics.TraceSwitch("SwitchOne", "The first switch");
myTraceSwitch.set_Level(System.Diagnostics.TraceLevel.Info);
// This message box displays true, becuase setting the level to 
// TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(Convert.ToString(myTraceSwitch.get_TraceWarning()));
// This message box displays false.
MessageBox.Show(Convert.ToString(myTraceSwitch.get_TraceVerbose()));}

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

BooleanSwitchTraceSwitch を指定する以外に、Switch クラスから継承される独自のスイッチを定義して、カスタマイズしたメソッドで基本クラスをオーバーライドできます。 開発者が定義するスイッチの作成については、「.NET Framework リファレンス」の「Switch クラス」を参照してください。

参照

処理手順

方法 : アプリケーション コードにトレース ステートメントを追加する

方法 : トレース スイッチを設定する

概念

トレース リスナー

実装とトレースの概要

その他の技術情報

アプリケーションのトレースとインストルメント