DefaultTraceListener クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
トレースの動作と既定の出力メソッドを提供します。
public ref class DefaultTraceListener : System::Diagnostics::TraceListener
public class DefaultTraceListener : System.Diagnostics.TraceListener
[System.Runtime.InteropServices.ComVisible(false)]
public class DefaultTraceListener : System.Diagnostics.TraceListener
type DefaultTraceListener = class
inherit TraceListener
[<System.Runtime.InteropServices.ComVisible(false)>]
type DefaultTraceListener = class
inherit TraceListener
Public Class DefaultTraceListener
Inherits TraceListener
- 継承
- 継承
- 属性
例
次のコード例では、確率と統計で使用される値である二項係数を計算します。 この例では、 DefaultTraceListener を使用して結果をトレースし、エラーをログに記録します。 新しい DefaultTraceListenerを作成し、 Trace.Listeners コレクションに追加し、 LogFileName プロパティをコマンド ライン引数で指定されたログ ファイルに設定します。
入力パラメーターの処理中にエラーが検出された場合、または CalcBinomial 関数が例外をスローした場合、 Fail メソッドはログを記録し、エラー メッセージを表示します。
AssertUiEnabled プロパティがfalse場合、エラー メッセージもコンソールに書き込まれます。 結果が正常に計算されると、 Write(String) メソッドと WriteLine(String) メソッドによって結果がログ ファイルに書き込まれます。
Fail、Write、およびWriteLineのメソッドにより、トレース情報はDefaultTraceListenerにのみ書き込まれます。 Trace.Listeners コレクション内のすべてのリスナーにトレース情報を書き込むには、Fail クラスのWrite、WriteLine、およびTraceメソッドを使用します。
using System;
using System.Diagnostics;
using Microsoft.VisualBasic;
class Binomial
{
// args(0) is the number of possibilities for binomial coefficients.
// args(1) is the file specification for the trace log file.
public static void Main(string[] args)
{
decimal possibilities;
decimal iter;
// Remove the original default trace listener.
Trace.Listeners.RemoveAt(0);
// Create and add a new default trace listener.
DefaultTraceListener defaultListener;
defaultListener = new DefaultTraceListener();
Trace.Listeners.Add(defaultListener);
// Assign the log file specification from the command line, if entered.
if (args.Length>=2)
{
defaultListener.LogFileName = args[1];
}
// Validate the number of possibilities argument.
if (args.Length>=1)
// Verify that the argument is a number within the correct range.
{
try
{
const decimal MAX_POSSIBILITIES = 99;
possibilities = Decimal.Parse(args[0]);
if (possibilities<0||possibilities>MAX_POSSIBILITIES)
{
throw new Exception(String.Format("The number of possibilities must " +
"be in the range 0..{0}.", MAX_POSSIBILITIES));
}
}
catch(Exception ex)
{
string failMessage = String.Format("\"{0}\" " +
"is not a valid number of possibilities.", args[0]);
defaultListener.Fail(failMessage, ex.Message);
if (!defaultListener.AssertUiEnabled)
{
Console.WriteLine(failMessage+ "\n" +ex.Message);
}
return;
}
}
else
{
// Report that the required argument is not present.
const string ENTER_PARAM = "Enter the number of " +
"possibilities as a command line argument.";
defaultListener.Fail(ENTER_PARAM);
if (!defaultListener.AssertUiEnabled)
{
Console.WriteLine(ENTER_PARAM);
}
return;
}
for(iter=0; iter<=possibilities; iter++)
{
decimal result;
string binomial;
// Compute the next binomial coefficient and handle all exceptions.
try
{
result = CalcBinomial(possibilities, iter);
}
catch(Exception ex)
{
string failMessage = String.Format("An exception was raised when " +
"calculating Binomial( {0}, {1} ).", possibilities, iter);
defaultListener.Fail(failMessage, ex.Message);
if (!defaultListener.AssertUiEnabled)
{
Console.WriteLine(failMessage+ "\n" +ex.Message);
}
return;
}
// Format the trace and console output.
binomial = String.Format("Binomial( {0}, {1} ) = ", possibilities, iter);
defaultListener.Write(binomial);
defaultListener.WriteLine(result.ToString());
Console.WriteLine("{0} {1}", binomial, result);
}
}
public static decimal CalcBinomial(decimal possibilities, decimal outcomes)
{
// Calculate a binomial coefficient, and minimize the chance of overflow.
decimal result = 1;
decimal iter;
for(iter=1; iter<=possibilities-outcomes; iter++)
{
result *= outcomes+iter;
result /= iter;
}
return result;
}
}
Imports System.Diagnostics
Module Binomial
' args(0) is the number of possibilities for binomial coefficients.
' args(1) is the file specification for the trace log file.
Sub Main(ByVal args() As String)
Dim possibilities As Decimal
Dim iter As Decimal
' Remove the original default trace listener.
Trace.Listeners.RemoveAt(0)
' Create and add a new default trace listener.
Dim defaultListener As DefaultTraceListener
defaultListener = New DefaultTraceListener
Trace.Listeners.Add(defaultListener)
' Assign the log file specification from the command line, if entered.
If args.Length >= 2 Then
defaultListener.LogFileName = args(1)
End If
' Validate the number of possibilities argument.
If args.Length >= 1 Then
' Verify that the argument is a number within the correct range.
Try
Const MAX_POSSIBILITIES As Decimal = 99
possibilities = Decimal.Parse(args(0))
If possibilities < 0 Or possibilities > MAX_POSSIBILITIES Then
Throw New Exception( _
String.Format("The number of possibilities must " & _
"be in the range 0..{0}.", MAX_POSSIBILITIES))
End If
Catch ex As Exception
Dim failMessage As String = String.Format("""{0}"" " & _
"is not a valid number of possibilities.", args(0))
defaultListener.Fail(failMessage, ex.Message)
If Not defaultListener.AssertUiEnabled Then
Console.WriteLine(failMessage & vbCrLf & ex.Message)
End If
Return
End Try
Else
' Report that the required argument is not present.
Const ENTER_PARAM As String = "Enter the number of " & _
"possibilities as a command line argument."
defaultListener.Fail(ENTER_PARAM)
If Not defaultListener.AssertUiEnabled Then
Console.WriteLine(ENTER_PARAM)
End If
Return
End If
For iter = 0 To possibilities
Dim result As Decimal
Dim binomial As String
' Compute the next binomial coefficient and handle all exceptions.
Try
result = CalcBinomial(possibilities, iter)
Catch ex As Exception
Dim failMessage As String = String.Format( _
"An exception was raised when " & _
"calculating Binomial( {0}, {1} ).", _
possibilities, iter)
defaultListener.Fail(failmessage, ex.Message)
If Not defaultListener.AssertUiEnabled Then
Console.WriteLine(failMessage & vbCrLf & ex.Message)
End If
Return
End Try
' Format the trace and console output.
binomial = String.Format("Binomial( {0}, {1} ) = ", _
possibilities, iter)
defaultListener.Write(binomial)
defaultListener.WriteLine(result.ToString)
Console.WriteLine("{0} {1}", binomial, result)
Next
End Sub
Function CalcBinomial(ByVal possibilities As Decimal, _
ByVal outcomes As Decimal) As Decimal
' Calculate a binomial coefficient, and minimize the chance of overflow.
Dim result As Decimal = 1
Dim iter As Decimal
For iter = 1 To possibilities - outcomes
result *= outcomes + iter
result /= iter
Next
Return result
End Function
End Module
注釈
このクラスのインスタンスは、 Debug.Listeners コレクションと Trace.Listeners コレクションに自動的に追加されます。 2 つ目の DefaultTraceListener を明示的に追加すると、デバッガーの出力ウィンドウでメッセージが重複し、アサートのメッセージ ボックスが重複します。
既定では、 Write メソッドと WriteLine メソッドは、Win32 OutputDebugString 関数と Debugger.Log メソッドにメッセージを出力します。
既定では、 Fail メソッドは、アプリケーションがユーザー インターフェイス モードで実行されているときにメッセージ ボックスを表示します。また、 WriteLineを使用してメッセージを出力します。
Note
Assertメソッド呼び出しとFail メソッド呼び出しのメッセージ ボックスの表示は、DefaultTraceListenerの有無によって異なります。
DefaultTraceListenerがListeners コレクションにない場合、メッセージ ボックスは表示されません。
DefaultTraceListenerは、Clear プロパティ (Listeners) でSystem.Diagnostics.Trace.Listeners.Clear() メソッドを呼び出すことによって削除できます。 .NET Framework アプリの場合は、アプリの構成ファイルで <clear> 要素 と <remove> 要素 を使用することもできます。
トレース リスナーを使用するには、トレースまたはデバッグを有効にする必要があります。 次の構文はコンパイラ固有です。 C# または Visual Basic 以外のコンパイラを使用する場合は、コンパイラのドキュメントを参照してください。
C# でデバッグを有効にするには、コードをコンパイルするときにコンパイラ コマンド ラインに
/d:DEBUGフラグを追加するか、ファイルの先頭に#define DEBUGを追加します。 Visual Basic で、/d:DEBUG=Trueフラグをコンパイラ のコマンド ラインに追加します。C# でトレースを有効にするには、コードのコンパイル時に
/d:TRACEフラグをコンパイラ コマンド ラインに追加するか、ファイルの先頭に#define TRACEを追加します。 Visual Basic で、/d:TRACE=Trueフラグをコンパイラ のコマンド ラインに追加します。
.NET Framework アプリの場合は、アプリケーションの名前に対応する構成ファイルを編集することで、トレース リスナーを追加できます。 このファイル内では、リスナーの追加、その種類の設定、パラメーターの設定、リスナーの削除、またはアプリケーションによって以前に設定されたすべてのリスナーのクリアを行うことができます。 構成ファイルの形式は、次の例のようになります。
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<remove name="Default" />
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\myListener.log" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
コンストラクター
| 名前 | 説明 |
|---|---|
| DefaultTraceListener() |
DefaultTraceListener プロパティ値として "Default" を使用して、Name クラスの新しいインスタンスを初期化します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| AssertUiEnabled |
アプリケーションがユーザー インターフェイス モードで実行されているかどうかを示す値を取得または設定します。 |
| Attributes |
アプリケーション構成ファイルで定義されているカスタム トレース リスナー属性を取得します。 (継承元 TraceListener) |
| Filter |
トレース リスナーのトレース フィルターを取得または設定します。 (継承元 TraceListener) |
| IndentLevel |
インデント レベルを取得または設定します。 (継承元 TraceListener) |
| IndentSize |
インデント内のスペースの数を取得または設定します。 (継承元 TraceListener) |
| IsThreadSafe |
トレース リスナーがスレッド セーフかどうかを示す値を取得します。 (継承元 TraceListener) |
| LogFileName |
トレース メッセージまたはデバッグ メッセージを書き込むログ ファイルの名前を取得または設定します。 |
| Name |
この TraceListenerの名前を取得または設定します。 (継承元 TraceListener) |
| NeedIndent |
出力をインデントするかどうかを示す値を取得または設定します。 (継承元 TraceListener) |
| TraceOutputOptions |
トレース出力オプションを取得または設定します。 (継承元 TraceListener) |
メソッド
| 名前 | 説明 |
|---|---|
| Close() |
派生クラスでオーバーライドされると、出力ストリームを閉じて、トレースまたはデバッグ出力を受信しなくなります。 (継承元 TraceListener) |
| CreateObjRef(Type) |
リモート オブジェクトとの通信に使用されるプロキシの生成に必要なすべての関連情報を含むオブジェクトを作成します。 (継承元 MarshalByRefObject) |
| Dispose() |
TraceListenerで使用されているすべてのリソースを解放します。 (継承元 TraceListener) |
| Dispose(Boolean) |
TraceListenerによって使用されるアンマネージ リソースを解放し、必要に応じてマネージド リソースを解放します。 (継承元 TraceListener) |
| Equals(Object) |
指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
| Fail(String, String) |
常に失敗するアサーションの詳細メッセージとスタック トレースを出力または表示します。 |
| Fail(String) |
常に失敗するアサーションのメッセージとスタック トレースを出力または表示します。 |
| Flush() |
派生クラスでオーバーライドされると、出力バッファーをフラッシュします。 (継承元 TraceListener) |
| GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
| GetLifetimeService() |
古い.
このインスタンスの有効期間ポリシーを制御する現在の有効期間サービス オブジェクトを取得します。 (継承元 MarshalByRefObject) |
| GetSupportedAttributes() |
トレース リスナーでサポートされているカスタム属性を取得します。 (継承元 TraceListener) |
| GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
| InitializeLifetimeService() |
古い.
このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。 (継承元 MarshalByRefObject) |
| MemberwiseClone() |
現在の Objectの簡易コピーを作成します。 (継承元 Object) |
| MemberwiseClone(Boolean) |
現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。 (継承元 MarshalByRefObject) |
| ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
| TraceData(TraceEventCache, String, TraceEventType, Int32, Object) |
トレース情報、データ オブジェクト、およびイベント情報をリスナー固有の出力に書き込みます。 (継承元 TraceListener) |
| TraceData(TraceEventCache, String, TraceEventType, Int32, Object[]) |
トレース情報、データ オブジェクトの配列、およびイベント情報をリスナー固有の出力に書き込みます。 (継承元 TraceListener) |
| TraceEvent(TraceEventCache, String, TraceEventType, Int32, String, Object[]) |
トレース情報、オブジェクトの書式設定された配列、およびイベント情報をリスナー固有の出力に書き込みます。 (継承元 TraceListener) |
| TraceEvent(TraceEventCache, String, TraceEventType, Int32, String) |
トレース情報、メッセージ、およびイベント情報をリスナー固有の出力に書き込みます。 (継承元 TraceListener) |
| TraceEvent(TraceEventCache, String, TraceEventType, Int32) |
トレースとイベントの情報をリスナー固有の出力に書き込みます。 (継承元 TraceListener) |
| TraceTransfer(TraceEventCache, String, Int32, String, Guid) |
トレース情報、メッセージ、関連するアクティビティ ID、イベント情報をリスナー固有の出力に書き込みます。 (継承元 TraceListener) |
| Write(Object, String) |
ToString() クラスを実装するときに作成するリスナーに、カテゴリ名とオブジェクトの TraceListener メソッドの値を書き込みます。 (継承元 TraceListener) |
| Write(Object) |
ToString() クラスを実装するときに作成するリスナーに、オブジェクトの TraceListener メソッドの値を書き込みます。 (継承元 TraceListener) |
| Write(String, String) |
TraceListener クラスを実装するときに作成するリスナーに、カテゴリ名とメッセージを書き込みます。 (継承元 TraceListener) |
| Write(String) |
|
| WriteIndent() |
このクラスを実装するときに作成するリスナーにインデントを書き込み、NeedIndent プロパティを |
| WriteLine(Object, String) |
ToString() クラスを実装するときに作成するリスナーに、カテゴリ名とオブジェクトの TraceListener メソッドの値を書き込み、続けて行ターミネータを書き込みます。 (継承元 TraceListener) |
| WriteLine(Object) |
ToString() クラスを実装するときに作成するリスナーに、オブジェクトの TraceListener メソッドの値を書き込み、続けて行終端記号を書き込みます。 (継承元 TraceListener) |
| WriteLine(String, String) |
TraceListener クラスを実装するときに作成するリスナーに、カテゴリ名とメッセージを書き込み、続けて行終端記号を書き込みます。 (継承元 TraceListener) |
| WriteLine(String) |
出力を |
適用対象
スレッド セーフ
このクラスはスレッド セーフです。