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 を示します。


///////////////////////////////////////////////////////////////////////
//
// 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>  

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

(継承元 TraceListener)
WriteLine(Object)

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

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

TraceListener クラスの実装時に作成したリスナーにカテゴリ名、オブジェクトの ToString() メソッドの値、および行終端記号を書き込みます。

(継承元 TraceListener)
WriteLine(String)

メッセージを追加のコンテキスト情報なしでログ ファイルに書き込み、続けて現在の行終端記号を書き込みます。

WriteLine(String, String)

TraceListener クラスの実装時に作成したリスナーにカテゴリ名、メッセージ、および行終端記号を書き込みます。

(継承元 TraceListener)

適用対象