次の方法で共有


EventSchemaTraceListener クラス

定義

エンドツーエンド イベントのトレースまたはデバッグ出力を、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 サフィックスがファイル名に自動的に追加されます。

リスナー メソッドは、 DebugTrace、および 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 なし イベント ログ用に存在します。 この要素は、パラメーター入力 (messageargs) を表します。 TraceEvent メソッドを呼び出して作成されたエスケープされた XML データを含むData要素が含まれています。
EventID なし 常に存在します。 この要素は、パラメーター入力 (id) を表します。
Execution ProcessID TraceOutputOptions プロパティにProcessId フラグが存在するかどうかによって異なります。 ProcessID属性は、TraceEventCacheで指定されます。
ThreadID ProcessIDが存在する場合に表示されます。 ThreadID属性は、TraceEventCacheで指定されます。
Level なし 常に存在します。 この要素は、パラメーター入力 ( eventTypeの数値) を表します。 255 より大きいパラメーター値は、 TraceEventType.Informationを表すレベル 8 として出力されます。 トレース イベントの種類 CriticalErrorWarningInformation、および Verbose は、それぞれレベル 1、2、4、8、および 10 として出力されます。
LogicalOperationStack なし TraceOutputOptions プロパティにLogicalOperationStack フラグが存在するかどうかによって異なります。 論理操作は 1 つだけ存在できます。 したがって、値はLogicalOperationStack要素の下LogicalOperationノードとして書き込まれます。
OpCode なし Levelが 255 より大きい場合に存在します。 この要素は、255 を超える数値を持つ Trace イベントの種類を表します。 StartStopSuspendResume、または 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 プロパティを falseにリセットします。

(継承元 TraceListener)
WriteLine(Object, String)

TraceListener クラスを実装するときに作成するリスナーに、カテゴリ名とオブジェクトのToString() メソッドの値を書き込み、続けて行ターミネータを書き込みます。

(継承元 TraceListener)
WriteLine(Object)

TraceListener クラスを実装するときに作成するリスナーに、オブジェクトのToString() メソッドの値を書き込み、続けて行終端記号を書き込みます。

(継承元 TraceListener)
WriteLine(String, String)

TraceListener クラスを実装するときに作成するリスナーに、カテゴリ名とメッセージを書き込み、続けて行終端記号を書き込みます。

(継承元 TraceListener)
WriteLine(String)

追加のコンテキスト情報を指定せずに、メッセージの後に現在の行ターミネータをログ ファイルに書き込みます。

適用対象