EventSchemaTraceListener クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
エンドツーエンド イベントのトレースまたはデバッグ出力を、XML エンコードされたスキーマ準拠のログ ファイルに転送します。
public ref class EventSchemaTraceListener : System::Diagnostics::TextWriterTraceListener
public class EventSchemaTraceListener : System.Diagnostics.TextWriterTraceListener
type EventSchemaTraceListener = class
inherit TextWriterTraceListener
Public Class EventSchemaTraceListener
Inherits TextWriterTraceListener
- 継承
例
次のコード例は、 EventSchemaTraceListener クラスの使用方法を示しています。
#define NOCONFIGFILE
using System;
using System.IO;
using System.Xml;
using System.Xml.XPath;
using System.Diagnostics;
class testClass
{
[STAThreadAttribute]
static void Main()
{
File.Delete("TraceOutput.xml");
TraceSource ts = new TraceSource("TestSource");
#if NOCONFIGFILE
//ts.Listeners.Add(new EventSchemaTraceListener("TraceOutput.xml", "eventListener", 65536, TraceLogRetentionOption.LimitedCircularFiles, 20480000, 2));
ts.Listeners.Add(new EventSchemaTraceListener("TraceOutput.xml", "eventListener"));
ts.Listeners["eventListener"].TraceOutputOptions = TraceOptions.DateTime | TraceOptions.ProcessId | TraceOptions.Timestamp;
#endif
ts.Switch.Level = SourceLevels.All;
string testString = "<Test><InnerElement Val=\"1\" /><InnerElement Val=\"Data\"/><AnotherElement>11</AnotherElement></Test>";
UnescapedXmlDiagnosticData unXData = new UnescapedXmlDiagnosticData(testString);
ts.TraceData(TraceEventType.Error, 38, unXData);
ts.TraceEvent(TraceEventType.Error, 38, testString);
Trace.Listeners.Add(new EventSchemaTraceListener("TraceOutput.xml"));
Trace.Write("test", "test");
Trace.Flush();
ts.Flush();
ts.Close();
DisplayProperties(ts);
Process.Start("notepad.exe", "TraceOutput.xml");
Console.WriteLine("Press the enter key to exit");
Console.ReadLine();
}
private static void DisplayProperties(TraceSource ts)
{
Console.WriteLine("IsThreadSafe? " + ((EventSchemaTraceListener)ts.Listeners["eventListener"]).IsThreadSafe);
Console.WriteLine("BufferSize = " + ((EventSchemaTraceListener)ts.Listeners["eventListener"]).BufferSize);
Console.WriteLine("MaximumFileSize = " + ((EventSchemaTraceListener)ts.Listeners["eventListener"]).MaximumFileSize);
Console.WriteLine("MaximumNumberOfFiles = " + ((EventSchemaTraceListener)ts.Listeners["eventListener"]).MaximumNumberOfFiles);
Console.WriteLine("Name = " + ((EventSchemaTraceListener)ts.Listeners["eventListener"]).Name);
Console.WriteLine("TraceLogRetentionOption = " + ((EventSchemaTraceListener)ts.Listeners["eventListener"]).TraceLogRetentionOption);
Console.WriteLine("TraceOutputOptions = " + ((EventSchemaTraceListener)ts.Listeners["eventListener"]).TraceOutputOptions);
}
}
#Const NOCONFIGFILE = True
Imports System.IO
Imports System.Xml
Imports System.Xml.XPath
Imports System.Diagnostics
Class testClass
<STAThreadAttribute()> _
Shared Sub Main()
File.Delete("TraceOutput.xml")
Dim ts As New TraceSource("TestSource")
#If NOCONFIGFILE Then
ts.Listeners.Add(New EventSchemaTraceListener("TraceOutput.xml", "eventListener", 65536, TraceLogRetentionOption.LimitedCircularFiles, 20480000, 2))
ts.Listeners("eventListener").TraceOutputOptions = TraceOptions.DateTime Or TraceOptions.ProcessId Or TraceOptions.Timestamp
#End If
ts.Switch.Level = SourceLevels.All
Dim testString As String = "<Test><InnerElement Val=""1"" /><InnerElement Val=""Data""/><AnotherElement>11</AnotherElement></Test>"
Dim unXData As New UnescapedXmlDiagnosticData(testString)
ts.TraceData(TraceEventType.Error, 38, unXData)
ts.TraceEvent(TraceEventType.Error, 38, testString)
ts.Flush()
ts.Close()
DisplayProperties(ts)
Process.Start("notepad.exe", "TraceOutput.xml")
Console.WriteLine("Press the enter key to exit")
Console.ReadLine()
End Sub
Private Shared Sub DisplayProperties(ByVal ts As TraceSource)
Console.WriteLine("IsThreadSafe? " + CType(ts.Listeners("eventListener"), EventSchemaTraceListener).IsThreadSafe.ToString())
Console.WriteLine("BufferSize = " + CType(ts.Listeners("eventListener"), EventSchemaTraceListener).BufferSize.ToString())
Console.WriteLine("MaximumFileSize = " + CType(ts.Listeners("eventListener"), EventSchemaTraceListener).MaximumFileSize.ToString())
Console.WriteLine("MaximumNumberOfFiles = " + CType(ts.Listeners("eventListener"), EventSchemaTraceListener).MaximumNumberOfFiles.ToString())
Console.WriteLine("Name = " + CType(ts.Listeners("eventListener"), EventSchemaTraceListener).Name)
Console.WriteLine("TraceLogRetentionOption = " + CType(ts.Listeners("eventListener"), EventSchemaTraceListener).TraceLogRetentionOption.ToString())
Console.WriteLine("TraceOutputOptions = " + CType(ts.Listeners("eventListener"), EventSchemaTraceListener).TraceOutputOptions.ToString())
End Sub
End Class
注釈
EventSchemaTraceListener クラスは、エンドツーエンドのスキーマ準拠イベントのトレースを提供します。 スレッド、 AppDomain、プロセス、およびコンピューターの境界を越える異種コンポーネントを持つシステムには、エンドツーエンドのトレースを使用できます。 標準化されたイベント スキーマにより、これらの境界を越えたトレースが可能になります。 スキーマを使用すると、カスタムのスキーマに準拠した要素を追加できます。 サービス トレース ビューアー ツール (SvcTraceViewer.exe) を使用して、イベント データを表示できます。
EventSchemaTraceListener は、ロックなしのトレースを暗黙的にサポートして、ログ記録のパフォーマンスを調整します。
EventSchemaTraceListener クラスは、トレースとデバッグの情報を XML でエンコードされたテキスト ストリームに変換します。 XML 出力の説明については、このセクションの後半の表を参照してください。
コードで EventSchemaTraceListener オブジェクトを作成できます。 または、.NET Framework アプリの場合は、アプリケーション構成ファイルを使用して EventSchemaTraceListener オブジェクトを有効または無効にしてから、アプリケーションで構成された EventSchemaTraceListener オブジェクトを使用することもできます。 .NET Framework アプリでのトレースとデバッグに構成ファイルを使用する方法については、「 トレースとデバッグの設定スキーマ」を参照してください。
.NET Framework アプリで EventSchemaTraceListener オブジェクトを構成するには、アプリケーションの名前に対応する構成ファイルを変更します。 このファイルでは、リスナーのプロパティを追加、削除、または設定できます。 構成ファイルの形式は次のとおりです。
<configuration>
<system.diagnostics>
<sources>
<source name="TestSource" >
<listeners>
<!--Remove the default trace listener for better performance.-->
<remove name="Default"/>
<!--Note: Removing the default trace listener prevents the dialog box
from being displayed for Debug.Fail or Debug.Assert commands that are
executed in user mode.-->
<add name="eventListener"
type="System.Diagnostics.EventSchemaTraceListener, system.core"
initializeData="TraceOutput.xml"
traceOutputOptions="ProcessId, DateTime, Timestamp"
bufferSize="65536"
maximumFileSize="20480000"
logRetentionOption="LimitedCircularFiles"
maximumNumberOfFiles="2"/>
</listeners>
</source>
</sources>
</system.diagnostics>
EventSchemaTraceListener クラスは、基底クラスのTraceListenerから Filter プロパティを継承します。
Filter プロパティを使用すると、リスナーで追加レベルのトレース出力フィルター処理を実行できます。 フィルターが存在する場合、トレース リスナーの Trace メソッドは、フィルターの ShouldTrace メソッドを呼び出して、トレースを出力するかどうかを判断します。
使用されているファイルまたは使用できないファイルに書き込もうとすると、GUID サフィックスがファイル名に自動的に追加されます。
注
リスナー メソッドは、 Debug、 Trace、および TraceSource クラスのメソッドによって呼び出されることを目的としています。 アプリケーション コードから直接リスナー メソッドを呼び出さないでください。 EventSchemaTraceListener リスナーは、主にTraceSource クラスで使用することを目的としています。
次の表では、XML 出力の要素と属性について説明します。
| 要素 | 属性 | アウトプット | メモ |
|---|---|---|---|
CallStack |
なし | TraceOutputOptions プロパティにCallstack フラグが存在するかどうかによって異なります。 | >や<などの特殊文字はエスケープ シーケンスに置き換えられます。 次の表のエスケープ文字変換テーブルを参照してください。 |
Computer |
なし | 常に存在します。 | この要素は、 MachineName プロパティの値を表します。 |
Correlation |
ActivityID |
常に存在します。 |
ActivityIDが指定されていない場合、既定値は空の GUID です。 |
RelatedActivityID |
Trace メソッド呼び出しにrelatedActivityId パラメーターが存在するかどうかによって異なります。 |
RelatedActivityID属性は、TraceTransfer メソッドのrelatedActivityId パラメーターに対応します。 |
|
Data |
なし | 常に存在します。 | この要素は、パラメーター入力 (data) を表します。 データ オブジェクトごとに 1 つの要素が提供されます。 イベント ログの場合、 Data 要素にはエスケープされた XML データが含まれます。 データ ログの場合、 Data 要素にはエスケープされていないデータが含まれます。 データ ログ出力では、渡されたデータ オブジェクトの ToString メソッドが使用されます。 |
Event |
なし | 常に存在します。 | この要素には、トレース イベントが含まれています。 |
EventData |
なし | イベント ログ用に存在します。 | この要素は、パラメーター入力 (message、 args) を表します。
TraceEvent メソッドを呼び出して作成されたエスケープされた XML データを含むData要素が含まれています。 |
EventID |
なし | 常に存在します。 | この要素は、パラメーター入力 (id) を表します。 |
Execution |
ProcessID |
TraceOutputOptions プロパティにProcessId フラグが存在するかどうかによって異なります。 |
ProcessID属性は、TraceEventCacheで指定されます。 |
ThreadID |
ProcessIDが存在する場合に表示されます。 |
ThreadID属性は、TraceEventCacheで指定されます。 |
|
Level |
なし | 常に存在します。 | この要素は、パラメーター入力 ( eventTypeの数値) を表します。 255 より大きいパラメーター値は、 TraceEventType.Informationを表すレベル 8 として出力されます。 トレース イベントの種類 Critical、 Error、 Warning、 Information、および Verbose は、それぞれレベル 1、2、4、8、および 10 として出力されます。 |
LogicalOperationStack |
なし | TraceOutputOptions プロパティにLogicalOperationStack フラグが存在するかどうかによって異なります。 | 論理操作は 1 つだけ存在できます。 したがって、値はLogicalOperationStack要素の下LogicalOperationノードとして書き込まれます。 |
OpCode |
なし |
Levelが 255 より大きい場合に存在します。 |
この要素は、255 を超える数値を持つ Trace イベントの種類を表します。 Start、 Stop、 Suspend、 Resume、または Transfer は、それぞれレベル 1、2、4、8、および 10 として出力されます。 |
Provider |
GUID |
常に存在します。 | 常に空です。 |
RenderingInfo |
Culture |
常に存在します。 | この属性は、イベントの種類のリソース文字列を表します。 常に "en-EN\" です。 |
System |
Name |
常に存在します。 | |
TimeCreated |
SystemTime |
TraceOutputOptions プロパティにDateTime フラグが存在するかどうかによって異なります。 | 時刻は、 TraceEventCache.DateTime プロパティの値です。 このプロパティは協定世界時として表されます。 |
TimeStamp |
なし | TraceOutputOptions プロパティにTimestamp フラグが存在するかどうかによって異なります。 | この要素は、 TraceEventCacheで指定されます。 |
UserData |
なし | データ ログ用に存在します。 | この要素には、TraceData メソッドからユーザーが指定したエスケープされていないデータを含むData要素が含まれています。 |
次の表は、XML 出力でエスケープされる文字を示しています。 エスケープは、ユーザー指定のエスケープされていないデータを含む UserData 要素を除くすべての要素と属性で発生します。
UserData要素は、TraceData メソッドの呼び出しの結果です。
| エスケープ文字 | 価値 |
|---|---|
| & | & |
| < | < |
| > | > |
| 「」 | 「」 |
| |' | |
| 0xD | |
| 0xA |
コンストラクター
| 名前 | 説明 |
|---|---|
| EventSchemaTraceListener(String, String, Int32, TraceLogRetentionOption, Int64, Int32) |
指定したログ保持ポリシー、最大サイズ、およびファイル数を持つ指定したファイルをデバッグ出力およびトレース出力の受信者として使用して、指定した名前と指定したバッファー サイズを使用して、 EventSchemaTraceListener クラスの新しいインスタンスを初期化します。 |
| EventSchemaTraceListener(String, String, Int32, TraceLogRetentionOption, Int64) |
指定したログ保持ポリシーと最大サイズを持つ指定したファイルをデバッグおよびトレース出力の受信者として使用して、指定した名前と指定したバッファー サイズを使用して、 EventSchemaTraceListener クラスの新しいインスタンスを初期化します。 |
| EventSchemaTraceListener(String, String, Int32, TraceLogRetentionOption) |
デバッグおよびトレース出力の受信者として指定したログ保持ポリシーを持つ指定したファイルを使用して、指定した名前と指定したバッファー サイズを使用して、 EventSchemaTraceListener クラスの新しいインスタンスを初期化します。 |
| EventSchemaTraceListener(String, String, Int32) |
指定したファイルをデバッグ出力およびトレース出力の受信者として使用して、指定した名前と指定したバッファー サイズを使用して、 EventSchemaTraceListener クラスの新しいインスタンスを初期化します。 |
| EventSchemaTraceListener(String, String) |
指定したファイルをデバッグ出力およびトレース出力の受信者として使用して、指定した名前で EventSchemaTraceListener クラスの新しいインスタンスを初期化します。 |
| EventSchemaTraceListener(String) |
指定したファイルをデバッグおよびトレース出力の受信者として使用して、 EventSchemaTraceListener クラスの新しいインスタンスを初期化します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| Attributes |
アプリケーション構成ファイルで定義されているカスタム トレース リスナー属性を取得します。 (継承元 TraceListener) |
| BufferSize |
出力バッファーのサイズを取得します。 |
| Filter |
トレース リスナーのトレース フィルターを取得または設定します。 (継承元 TraceListener) |
| IndentLevel |
インデント レベルを取得または設定します。 (継承元 TraceListener) |
| IndentSize |
インデント内のスペースの数を取得または設定します。 (継承元 TraceListener) |
| IsThreadSafe |
トレース リスナーがスレッド セーフかどうかを示す値を取得します。 |
| MaximumFileSize |
ログ ファイルの最大サイズを取得します。 |
| MaximumNumberOfFiles |
ログ ファイルの最大数を取得します。 |
| Name |
この TraceListenerの名前を取得または設定します。 (継承元 TraceListener) |
| NeedIndent |
出力をインデントするかどうかを示す値を取得または設定します。 (継承元 TraceListener) |
| TraceLogRetentionOption |
ファイルのトレース ログ保持オプションを取得します。 |
| TraceOutputOptions |
トレース出力オプションを取得または設定します。 (継承元 TraceListener) |
| Writer |
ログ ファイルに書き込む基になるテキスト ライターを取得または設定します。 |
メソッド
| 名前 | 説明 |
|---|---|
| Close() |
トレースまたはデバッグ出力を受信しなくなったように、このリスナーのログ ファイルを閉じます。 |
| CreateObjRef(Type) |
リモート オブジェクトとの通信に使用されるプロキシの生成に必要なすべての関連情報を含むオブジェクトを作成します。 (継承元 MarshalByRefObject) |
| Dispose() |
TraceListenerによって使用されるすべてのリソースを解放します。 (継承元 TraceListener) |
| Dispose(Boolean) |
この TextWriterTraceListener オブジェクトを破棄します。 (継承元 TextWriterTraceListener) |
| Equals(Object) |
指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
| Fail(String, String) |
基本的なエラー メッセージや詳細なエラー メッセージなどのエラー情報をログ ファイルに書き込みます。 |
| Fail(String) |
TraceListener クラスを実装するときに作成したリスナーにエラー メッセージを出力します。 (継承元 TraceListener) |
| Flush() |
バッファー内のデータをこのリスナーのログに書き込みます。 |
| GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
| GetLifetimeService() |
古い.
このインスタンスの有効期間ポリシーを制御する現在の有効期間サービス オブジェクトを取得します。 (継承元 MarshalByRefObject) |
| GetSupportedAttributes() |
トレース リスナーがサポートするカスタム XML 構成属性を取得します。 |
| GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
| InitializeLifetimeService() |
古い.
このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。 (継承元 MarshalByRefObject) |
| MemberwiseClone() |
現在の Objectの簡易コピーを作成します。 (継承元 Object) |
| MemberwiseClone(Boolean) |
現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。 (継承元 MarshalByRefObject) |
| ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
| TraceData(TraceEventCache, String, TraceEventType, Int32, Object) |
トレース情報、1 つのデータ オブジェクト、およびイベント情報をログ ファイルに書き込みます。 |
| TraceData(TraceEventCache, String, TraceEventType, Int32, Object[]) |
トレース情報、複数のデータ オブジェクト、およびイベント情報をログ ファイルに書き込みます。 |
| TraceEvent(TraceEventCache, String, TraceEventType, Int32, String, Object[]) |
トレース情報、書式設定されたメッセージ、およびイベント情報をログ ファイルに書き込みます。 |
| TraceEvent(TraceEventCache, String, TraceEventType, Int32, String) |
トレース情報、メッセージ、およびイベント情報をログ ファイルに書き込みます。 |
| TraceEvent(TraceEventCache, String, TraceEventType, Int32) |
トレースとイベントの情報をリスナー固有の出力に書き込みます。 (継承元 TraceListener) |
| TraceTransfer(TraceEventCache, String, Int32, String, Guid) |
関連するアクティビティの ID、メッセージ、イベント情報などのトレース情報をログ ファイルに書き込みます。 |
| Write(Object, String) |
TraceListener クラスを実装するときに作成するリスナーに、カテゴリ名とオブジェクトのToString() メソッドの値を書き込みます。 (継承元 TraceListener) |
| Write(Object) |
TraceListener クラスを実装するときに作成するリスナーに、オブジェクトのToString() メソッドの値を書き込みます。 (継承元 TraceListener) |
| Write(String, String) |
TraceListener クラスを実装するときに作成するリスナーに、カテゴリ名とメッセージを書き込みます。 (継承元 TraceListener) |
| Write(String) |
追加のコンテキスト情報を指定せずに、ログ ファイルにメッセージを書き込みます。 |
| WriteIndent() |
このクラスを実装するときに作成するリスナーにインデントを書き込み、 NeedIndent プロパティを |
| WriteLine(Object, String) |
TraceListener クラスを実装するときに作成するリスナーに、カテゴリ名とオブジェクトのToString() メソッドの値を書き込み、続けて行ターミネータを書き込みます。 (継承元 TraceListener) |
| WriteLine(Object) |
TraceListener クラスを実装するときに作成するリスナーに、オブジェクトのToString() メソッドの値を書き込み、続けて行終端記号を書き込みます。 (継承元 TraceListener) |
| WriteLine(String, String) |
TraceListener クラスを実装するときに作成するリスナーに、カテゴリ名とメッセージを書き込み、続けて行終端記号を書き込みます。 (継承元 TraceListener) |
| WriteLine(String) |
追加のコンテキスト情報を指定せずに、メッセージの後に現在の行ターミネータをログ ファイルに書き込みます。 |