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 を示します。
///////////////////////////////////////////////////////////////////////
//
// EventSchemaTraceListener.cpp : main project file.
// Expected Output:
// 1)
// EventSchemaTraceListener CPP Sample
//
// IsThreadSafe? True
// BufferSize = 65536
// MaximumFileSize = 20480000
// MaximumNumberOfFiles = 2
// Name = eventListener
// TraceLogRetentionOption = LimitedCircularFiles
// TraceOutputOptions = DateTime, Timestamp, ProcessId
//
// Press the enter key to exit
//
// 2) An output file is created named TraceOutput.xml. It will be
// opened and displayed in Microsoft Notepad.
//
// NOTE 1:
// Under certain circumstances, the VS C++ compiler will treat
// Console::WriteLine("MyText = " + MyVar);
// differently then the VS CSharp compiler.
// The C++ compiler will produce error C3063, whereas the
// CSharp compiler accepts the statement.
// This occurs when the VS C++ compiler cannot determine the
// datatype of "MyVar" because it is an enumeration type.
// The solution is:
// Use either of the following two methods:
// Console::WriteLine("MyText = {0} " , MyVar);
// Console::WriteLine("MyText = " + MyVar.ToString());
//
// Although not specific to this particular pieces of code,
// this is demonstrated below in the Display function: The
// last two members, TraceLogRetentionOption, and
// TraceOutputOptions, are enumerations, and cannot simply be
// concatenated into Console::WriteLine.
//
///////////////////////////////////////////////////////////////////////
#using <System.dll>
#using <System.Core.dll>
#define NOCONFIGFILE 1
using namespace System;
using namespace System::IO;
using namespace System::Diagnostics;
[STAThreadAttribute]
void main()
{
Console::WriteLine("EventSchemaTraceListener CPP Sample\n");
File::Delete("TraceOutput.xml");
TraceSource ^ ts = gcnew TraceSource("TestSource");
#if NOCONFIGFILE
ts->Listeners->Add(gcnew EventSchemaTraceListener("TraceOutput.xml",
"eventListener", 65536,
TraceLogRetentionOption::LimitedCircularFiles,
20480000, 2));
ts->Listeners["eventListener"]->TraceOutputOptions =
TraceOptions::DateTime |
TraceOptions::ProcessId |
TraceOptions::Timestamp;
#endif
EventSchemaTraceListener ^ ESTL =
(EventSchemaTraceListener^)(ts->Listeners["eventListener"]);
Console::WriteLine("IsThreadSafe? = " + ESTL->IsThreadSafe);
Console::WriteLine("BufferSize = " + ESTL->BufferSize);
Console::WriteLine("MaximumFileSize = " + ESTL->MaximumFileSize);
Console::WriteLine("MaximumNumberOfFiles = " + ESTL->MaximumNumberOfFiles);
Console::WriteLine("Name = " + ESTL->Name);
Console::WriteLine("TraceLogRetentionOption = " + ESTL->TraceLogRetentionOption.ToString());
Console::WriteLine("TraceOutputOptions = {0}\n", ESTL->TraceOutputOptions);
ts->Switch->Level = SourceLevels::All;
String ^ testString = "<Test><InnerElement Val=\"1\" />"
+ "<InnerElement Val=\"Data\"/>"
+ "<AnotherElement>11</AnotherElement></Test>";
UnescapedXmlDiagnosticData ^ unXData = gcnew UnescapedXmlDiagnosticData(testString);
ts->TraceData(TraceEventType::Error, 38, unXData);
ts->TraceEvent(TraceEventType::Error, 38, testString);
ts->Flush();
ts->Close();
Process::Start("notepad.exe", "TraceOutput.xml");
Console::WriteLine("\nPress the enter key to exit");
Console::ReadLine();
}
#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 、 Filter 基底クラス から プロパティを継承します TraceListener。 プロパティを Filter 使用すると、リスナーで追加レベルのトレース出力フィルター処理を実行できます。 フィルターが存在する場合、 Trace
トレース リスナーのメソッドはフィルターの メソッドを ShouldTrace 呼び出して、トレースを出力するかどうかを判断します。
使用中のファイルまたは使用できないファイルに書き込もうとすると、GUID サフィックスがファイル名に自動的に追加されます。
注意
リスナー メソッドは、および TraceSource クラスのDebugTraceメソッドによって呼び出されることを目的としています。 アプリケーション コードからリスナー メソッドを直接呼び出さないでください。 リスナーは EventSchemaTraceListener 、主に クラスで TraceSource 使用することを目的としています。
次の表では、XML 出力の要素と属性について説明します。
要素 | 属性 | Output | メモ |
---|---|---|---|
CallStack |
なし | プロパティに フラグが Callstack 存在するかどうか TraceOutputOptions によって異なります。 | や < などの>特殊文字は、エスケープ シーケンスに置き換えられます。 次の表のエスケープ文字変換テーブルを参照してください。 |
Computer |
なし | 常に表示されます。 | この要素は、 プロパティの値を MachineName 表します。 |
Correlation |
ActivityID |
常に表示されます。 | が指定されていない場合 ActivityID 、既定値は空の GUID です。 |
RelatedActivityID |
メソッド呼び出しに パラメーターが relatedActivityId 存在するかどうか Trace によって異なります。 |
属性は RelatedActivityID 、 メソッドの relatedActivityId パラメーターに TraceTransfer 対応します。 |
|
Data |
なし | 常に表示されます。 | この要素は、パラメーター入力 (data ) を表します。 データ オブジェクトごとに 1 つの要素が提供されます。 イベント ログの場合、 Data 要素にはエスケープされた XML データが含まれます。 データ ログの場合、 Data 要素にはエスケープされていないデータが含まれます。 データ ログ出力では、 ToString 渡されたデータ オブジェクトの メソッドを使用します。 |
Event |
なし | 常に表示されます。 | この要素には、トレース イベントが含まれています。 |
EventData |
なし | イベント ログ用に存在します。 | この要素は、パラメーター入力 (message 、 args ) を表します。 これには、 メソッドを Data 呼び出して作成されたエスケープされた XML データを含む要素が TraceEvent 含まれています。 |
EventID |
なし | 常に表示されます。 | この要素は、パラメーター入力 (id ) を表します。 |
Execution |
ProcessID |
プロパティに フラグが ProcessId 存在するかどうか TraceOutputOptions によって異なります。 | 属性は ProcessID で指定されます TraceEventCache。 |
ThreadID |
が存在する場合 ProcessID に表示されます。 |
属性は ThreadID で指定されます TraceEventCache。 |
|
Level |
なし | 常に表示されます。 | この要素は、パラメーター入力 (の数値 eventType ) を表します。 255 より大きいパラメーター値は、レベル 8 として出力されます。これは を表します TraceEventType.Information。 トレース イベントの種類 Critical、 Error、、 Warning、 Informationおよび Verbose はそれぞれレベル 1、2、4、8、および 10 として出力されます。 |
LogicalOperationStack |
なし | プロパティに フラグが LogicalOperationStack 存在するかどうか TraceOutputOptions によって異なります。 | 存在できる論理操作は 1 つだけです。 したがって、値は 要素の下にLogicalOperationStack ノードとしてLogicalOperation 書き込まれます。 |
OpCode |
なし | が 255 より大きい場合 Level に表示されます。 |
この要素は、255 を超える数値を持つ Trace イベントの種類を表します。 Start、 Stop、 Suspend、 Resume、または Transfer は、それぞれレベル 1、2、4、8、および 10 として出力されます。 |
Provider |
GUID |
常に表示されます。 | 常に空です。 |
RenderingInfo |
Culture |
常に表示されます。 | この属性は、イベントの種類のリソース文字列を表します。 常に "en-EN\" です。 |
System |
Name |
常に表示されます。 | |
TimeCreated |
SystemTime |
プロパティに フラグが DateTime 存在するかどうか TraceOutputOptions によって異なります。 | 時刻は プロパティの TraceEventCache.DateTime 値です。 このプロパティは協定世界時として表されます |
TimeStamp |
なし | プロパティに フラグが Timestamp 存在するかどうか TraceOutputOptions によって異なります。 | この要素は、 で指定されます TraceEventCache。 |
UserData |
なし | データ ログ用に存在します。 | この要素には、 Data メソッドからユーザー指定のデータがエスケープされていない要素が TraceData 含まれています。 |
次の表は、XML 出力でエスケープされる文字を示しています。 エスケープは、ユーザー指定のエスケープされていないデータを含む 要素を UserData
除くすべての要素と属性で発生します。 要素は UserData
、 メソッドの呼び出しの TraceData 結果です。
エスケープ文字 | 値 |
---|---|
& | & |
< | < |
> | > |
" | " |
|' | |
0xD | |
0xA |
コンストラクター
EventSchemaTraceListener(String) |
指定したファイルをデバッグ出力およびトレース出力の受信者として使用して、EventSchemaTraceListener クラスの新しいインスタンスを初期化します。 |
EventSchemaTraceListener(String, String) |
指定したファイルをデバッグ出力およびトレース出力の受信者として使用し、名前を指定して EventSchemaTraceListener クラスの新しいインスタンスを初期化します。 |
EventSchemaTraceListener(String, String, Int32) |
指定したファイルをデバッグ出力およびトレース出力の受信者として使用し、名前とバッファー サイズを指定して EventSchemaTraceListener クラスの新しいインスタンスを初期化します。 |
EventSchemaTraceListener(String, String, Int32, TraceLogRetentionOption) |
指定したログ保持ポリシーを持つ指定したファイルをデバッグ出力およびトレース出力の受信者として使用し、名前とバッファー サイズを指定して EventSchemaTraceListener クラスの新しいインスタンスを初期化します。 |
EventSchemaTraceListener(String, String, Int32, TraceLogRetentionOption, Int64) |
指定したログ保持ポリシーおよび最大サイズを持つ指定したファイルをデバッグ出力およびトレース出力の受信者として使用し、名前とバッファー サイズを指定して EventSchemaTraceListener クラスの新しいインスタンスを初期化します。 |
EventSchemaTraceListener(String, String, Int32, TraceLogRetentionOption, Int64, Int32) |
指定したログ保持ポリシー、最大サイズ、およびファイル数を持つ指定したファイルをデバッグ出力およびトレース出力の受信者として使用し、名前とバッファー サイズを指定して EventSchemaTraceListener クラスの新しいインスタンスを初期化します。 |
プロパティ
Attributes |
アプリケーション構成ファイルに定義されているトレース リスナーのカスタム属性を取得します。 (継承元 TraceListener) |
BufferSize |
出力バッファーのサイズを取得します。 |
Filter |
トレース リスナーのトレース フィルターを取得または設定します。 (継承元 TraceListener) |
IndentLevel |
インデント レベルを取得または設定します。 (継承元 TraceListener) |
IndentSize |
1 つのインデントに含まれるスペースの数を取得または設定します。 (継承元 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) |
TraceListener クラスを実装した場合、作成したリスナーにエラー メッセージを出力します。 (継承元 TraceListener) |
Fail(String, String) |
基本的なエラー メッセージと詳細なエラー メッセージを含むエラー情報をログ ファイルに書き込みます。 |
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) |
トレース情報、単一のデータ オブジェクト、およびイベント情報をログ ファイルに書き込みます。 |
TraceData(TraceEventCache, String, TraceEventType, Int32, Object[]) |
トレース情報、複数のデータ オブジェクト、およびイベント情報をログ ファイルに書き込みます。 |
TraceEvent(TraceEventCache, String, TraceEventType, Int32) |
トレース情報およびイベント情報をリスナー固有の出力に書き込みます。 (継承元 TraceListener) |
TraceEvent(TraceEventCache, String, TraceEventType, Int32, String) |
トレース情報、メッセージ、およびイベント情報をログ ファイルに書き込みます。 |
TraceEvent(TraceEventCache, String, TraceEventType, Int32, String, Object[]) |
トレース情報、書式設定されたメッセージ、およびイベント情報をログ ファイルに書き込みます。 |
TraceTransfer(TraceEventCache, String, Int32, String, Guid) |
関連するアクティビティ ID などのトレース情報、メッセージ、およびイベント情報をログ ファイルに書き込みます。 |
Write(Object) |
オブジェクトの ToString() メソッドの値を、TraceListener クラスを実装した時に作成したリスナーに書き込みます。 (継承元 TraceListener) |
Write(Object, String) |
カテゴリ名と、オブジェクトの ToString() メソッドの値を、TraceListener クラスを実装するときに作成したリスナーに書き込みます。 (継承元 TraceListener) |
Write(String) |
メッセージを追加のコンテキスト情報なしでログ ファイルに書き込みます。 |
Write(String, String) |
TraceListener クラスを実装した時に作成したリスナーにカテゴリ名とメッセージを書き込みます。 (継承元 TraceListener) |
WriteIndent() |
このクラスの実装時に作成したリスナーにインデントを書き込み、NeedIndent プロパティを |
WriteLine(Object) |
TraceListener クラスの実装時に作成したリスナーにオブジェクトの ToString() メソッドの値と行終端記号を書き込みます。 (継承元 TraceListener) |
WriteLine(Object, String) |
TraceListener クラスの実装時に作成したリスナーにカテゴリ名、オブジェクトの ToString() メソッドの値、および行終端記号を書き込みます。 (継承元 TraceListener) |
WriteLine(String) |
メッセージを追加のコンテキスト情報なしでログ ファイルに書き込み、続けて現在の行終端記号を書き込みます。 |
WriteLine(String, String) |
TraceListener クラスの実装時に作成したリスナーにカテゴリ名、メッセージ、および行終端記号を書き込みます。 (継承元 TraceListener) |
適用対象
.NET