EventSchemaTraceListener Klasa

Definicja

Kieruje śledzenie lub debugowanie danych wyjściowych zdarzeń end-to-end do pliku dziennika zgodnego ze schematem XML.

public ref class EventSchemaTraceListener : System::Diagnostics::TextWriterTraceListener
public class EventSchemaTraceListener : System.Diagnostics.TextWriterTraceListener
type EventSchemaTraceListener = class
    inherit TextWriterTraceListener
Public Class EventSchemaTraceListener
Inherits TextWriterTraceListener
Dziedziczenie

Przykłady

W poniższym przykładzie kodu pokazano, jak używać EventSchemaTraceListener klasy .

#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

Uwagi

Klasa EventSchemaTraceListener udostępnia śledzenie zdarzeń zgodnych ze schematem. Możesz użyć kompleksowego śledzenia dla systemu, który ma heterogeniczne składniki obejmujące wątek, , AppDomainproces i granice komputera. Ustandaryzowany schemat zdarzeń umożliwia śledzenie przez te granice. Schemat umożliwia dodawanie niestandardowych elementów zgodnych ze schematem. Aby wyświetlić dane zdarzenia, możesz użyć narzędzia Podgląd śledzenia usługi (SvcTraceViewer.exe ).

EventSchemaTraceListener jest dostrojony pod kątem wydajności rejestrowania z niejawną obsługą śledzenia bez blokady.

Klasa EventSchemaTraceListener konwertuje informacje śledzenia i debugowania na strumień tekstowy zakodowany w formacie XML. Opis danych wyjściowych XML jest wyświetlany w tabelach w dalszej części tej sekcji.

Obiekt można utworzyć EventSchemaTraceListener w kodzie. Alternatywnie w przypadku aplikacji .NET Framework można włączyć lub wyłączyć EventSchemaTraceListener obiekt za pośrednictwem pliku konfiguracji aplikacji, a następnie użyć skonfigurowanego EventSchemaTraceListener obiektu w aplikacji. Aby uzyskać informacje na temat używania plików konfiguracji do śledzenia i debugowania w aplikacjach .NET Framework, zobacz Schemat ustawień śledzenia i debugowania.

Aby skonfigurować EventSchemaTraceListener obiekt w aplikacji .NET Framework, zmodyfikuj plik konfiguracji odpowiadający nazwie aplikacji. W tym pliku można dodawać, usuwać lub ustawiać właściwości odbiornika. Plik konfiguracji powinien być sformatowany w następujący sposób:

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

Klasa EventSchemaTraceListener dziedziczy Filter właściwość z klasy TraceListenerbazowej . Właściwość Filter umożliwia dodatkowy poziom filtrowania danych wyjściowych śledzenia w odbiorniku. Jeśli filtr jest obecny, metody odbiornika śledzenia wywołają ShouldTrace metodę filtru, aby określić, Trace czy emitować ślad.

Jeśli zostanie podjęta próba zapisu w używanym pliku lub jest niedostępna, sufiks GUID zostanie automatycznie dodany do nazwy pliku.

Uwaga / Notatka

Metody odbiornika mają być wywoływane przez metody Debugklas , Tracei TraceSource . Nie należy wywoływać metod odbiornika bezpośrednio z kodu aplikacji. Odbiornik EventSchemaTraceListener jest przeznaczony głównie do użycia przez klasę TraceSource .

W poniższej tabeli opisano elementy i atrybuty danych wyjściowych XML.

Składnik Atrybuty Wynik Notatki
CallStack Żadne Zależy od obecności Callstack flagi we TraceOutputOptions właściwości . Znaki specjalne, takie jak > lub < , są zastępowane sekwencjami ucieczki. Zobacz tabelę tłumaczenia znaków ucieczki w następnej tabeli.
Computer Żadne Zawsze dostępny. Ten element reprezentuje wartość MachineName właściwości.
Correlation ActivityID Zawsze dostępny. Jeśli ActivityID nie zostanie określony, wartość domyślna to pusty identyfikator GUID.
RelatedActivityID Zależy od obecności parametru relatedActivityId w wywołaniu Trace metody. Atrybut RelatedActivityID odpowiada parametrowi relatedActivityIdTraceTransfer metody .
Data Żadne Zawsze dostępny. Ten element reprezentuje dane wejściowe parametru (data). Jeden element jest udostępniany dla każdego obiektu danych. W przypadku dzienników Data zdarzeń element zawiera dane XML ucieczki. W przypadku dzienników Data danych element zawiera niezasłane dane. Dane wyjściowe dziennika danych używają ToString metody przekazanych obiektów danych.
Event Żadne Zawsze dostępny. Ten element zawiera zdarzenie śledzenia.
EventData Żadne Obecny dla dzienników zdarzeń. Ten element reprezentuje dane wejściowe parametru (message, args). Zawiera Data elementy z danymi XML ucieczki, które są tworzone przez wywołanie TraceEvent metody .
EventID Żadne Zawsze dostępny. Ten element reprezentuje dane wejściowe parametru (id).
Execution ProcessID Zależy od obecności ProcessId flagi we TraceOutputOptions właściwości . Atrybut ProcessID jest określony w obiekcie TraceEventCache.
ThreadID Obecny, gdy ProcessID jest obecny. Atrybut ThreadID jest określony w obiekcie TraceEventCache.
Level Żadne Zawsze dostępny. Ten element reprezentuje dane wejściowe parametru eventType(wartość liczbowa ). Wartości parametrów większe niż 255 są danymi wyjściowymi na poziomie 8, który reprezentuje TraceEventType.Informationwartość . Typy Criticalzdarzeń śledzenia, , ErrorWarning, Informationi Verbose są danymi wyjściowymi odpowiednio jako poziomy 1, 2, 4, 8 i 10.
LogicalOperationStack Żadne Zależy od obecności LogicalOperationStack flagi we TraceOutputOptions właściwości . Może istnieć tylko jedna operacja logiczna. W związku z tym wartości są zapisywane jako LogicalOperation węzły w elemecie LogicalOperationStack .
OpCode Żadne Występuje, gdy Level jest większy niż 255. Ten element reprezentuje typy zdarzeń Trace, które mają wartości liczbowe większe niż 255. Start, , StopSuspend, Resume, lub Transfer są danymi wyjściowymi odpowiednio jako poziomy 1, 2, 4, 8 i 10.
Provider GUID Zawsze dostępny. Zawsze puste.
RenderingInfo Culture Zawsze dostępny. Ten atrybut reprezentuje ciąg zasobu dla typu zdarzenia. Zawsze jest to "en-EN\".
System Name Zawsze dostępny.
TimeCreated SystemTime Zależy od obecności DateTime flagi we TraceOutputOptions właściwości . Czas jest wartością TraceEventCache.DateTime właściwości. Ta właściwość jest wyrażana jako uniwersalny czas koordynowany
TimeStamp Żadne Zależy od obecności Timestamp flagi we TraceOutputOptions właściwości . Ten element jest określony w elemecie TraceEventCache.
UserData Żadne Obecny dla dzienników danych. Ten element zawiera Data elementy z niezasłanianymi danymi dostarczonymi przez użytkownika z TraceData metody .

W poniższej tabeli przedstawiono znaki ucieczki w danych wyjściowych XML. Ucieczka występuje we wszystkich elementach i atrybutach, z wyjątkiem UserData elementu, który zawiera dane udostępniane przez użytkownika, niezasłane. Element UserData jest wynikiem wywołań TraceData metody .

Znak ucieczki Wartość
& &
< <
> >
" "
|'
0xD
0xA

Konstruktory

Nazwa Opis
EventSchemaTraceListener(String, String, Int32, TraceLogRetentionOption, Int64, Int32)

Inicjuje nowe wystąpienie EventSchemaTraceListener klasy o określonej nazwie i określonym rozmiarze buforu przy użyciu określonego pliku z określonymi zasadami przechowywania dziennika, maksymalnym rozmiarem i liczbą plików jako adresat debugowania i śledzenia danych wyjściowych.

EventSchemaTraceListener(String, String, Int32, TraceLogRetentionOption, Int64)

Inicjuje nowe wystąpienie EventSchemaTraceListener klasy o określonej nazwie i określonym rozmiarze buforu przy użyciu określonego pliku z określonymi zasadami przechowywania dziennika i maksymalnym rozmiarem jako adresatem danych wyjściowych debugowania i śledzenia.

EventSchemaTraceListener(String, String, Int32, TraceLogRetentionOption)

Inicjuje nowe wystąpienie EventSchemaTraceListener klasy o określonej nazwie i określonym rozmiarze buforu przy użyciu określonego pliku z określonymi zasadami przechowywania dziennika jako adresata danych wyjściowych debugowania i śledzenia.

EventSchemaTraceListener(String, String, Int32)

Inicjuje nowe wystąpienie EventSchemaTraceListener klasy o określonej nazwie i określonym rozmiarze buforu, używając określonego pliku jako adresata danych wyjściowych debugowania i śledzenia.

EventSchemaTraceListener(String, String)

Inicjuje nowe wystąpienie EventSchemaTraceListener klasy o określonej nazwie, używając określonego pliku jako adresata debugowania i śledzenia danych wyjściowych.

EventSchemaTraceListener(String)

Inicjuje nowe wystąpienie EventSchemaTraceListener klasy przy użyciu określonego pliku jako adresata debugowania i śledzenia danych wyjściowych.

Właściwości

Nazwa Opis
Attributes

Pobiera niestandardowe atrybuty odbiornika śledzenia zdefiniowane w pliku konfiguracji aplikacji.

(Odziedziczone po TraceListener)
BufferSize

Pobiera rozmiar buforu wyjściowego.

Filter

Pobiera lub ustawia filtr śledzenia dla odbiornika śledzenia.

(Odziedziczone po TraceListener)
IndentLevel

Pobiera lub ustawia poziom wcięcia.

(Odziedziczone po TraceListener)
IndentSize

Pobiera lub ustawia liczbę spacji w wcięcie.

(Odziedziczone po TraceListener)
IsThreadSafe

Pobiera wartość wskazującą, czy odbiornik śledzenia jest bezpieczny wątkiem.

MaximumFileSize

Pobiera maksymalny rozmiar pliku dziennika.

MaximumNumberOfFiles

Pobiera maksymalną liczbę plików dziennika.

Name

Pobiera lub ustawia nazwę dla tego elementu TraceListener.

(Odziedziczone po TraceListener)
NeedIndent

Pobiera lub ustawia wartość wskazującą, czy ma być wcięcie danych wyjściowych.

(Odziedziczone po TraceListener)
TraceLogRetentionOption

Pobiera opcję przechowywania dziennika śledzenia dla pliku.

TraceOutputOptions

Pobiera lub ustawia opcje danych wyjściowych śledzenia.

(Odziedziczone po TraceListener)
Writer

Pobiera lub ustawia podstawowy składnik zapisywania tekstu, który zapisuje w pliku dziennika.

Metody

Nazwa Opis
Close()

Zamyka plik dziennika dla tego odbiornika, aby nie odbierał już danych wyjściowych śledzenia ani debugowania.

CreateObjRef(Type)

Tworzy obiekt zawierający wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikowania się z obiektem zdalnym.

(Odziedziczone po MarshalByRefObject)
Dispose()

Zwalnia wszystkie zasoby używane przez program TraceListener.

(Odziedziczone po TraceListener)
Dispose(Boolean)

Usuwa ten TextWriterTraceListener obiekt.

(Odziedziczone po TextWriterTraceListener)
Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.

(Odziedziczone po Object)
Fail(String, String)

Zapisuje informacje o błędach, w tym podstawowy komunikat o błędzie i szczegółowy komunikat o błędzie, do pliku dziennika.

Fail(String)

Emituje komunikat o błędzie do odbiornika utworzonego podczas implementowania TraceListener klasy.

(Odziedziczone po TraceListener)
Flush()

Powoduje zapisanie buforowanych danych w dzienniku dla tego odbiornika.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetLifetimeService()
Przestarzałe.

Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
GetSupportedAttributes()

Pobiera niestandardowe atrybuty konfiguracji XML obsługiwane przez odbiornik śledzenia.

GetType()

Pobiera Type bieżącego wystąpienia.

(Odziedziczone po Object)
InitializeLifetimeService()
Przestarzałe.

Uzyskuje obiekt usługi okresu istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Object.

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu.

(Odziedziczone po MarshalByRefObject)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)
TraceData(TraceEventCache, String, TraceEventType, Int32, Object)

Zapisuje informacje śledzenia, pojedynczy obiekt danych i informacje o zdarzeniach do pliku dziennika.

TraceData(TraceEventCache, String, TraceEventType, Int32, Object[])

Zapisuje informacje o śledzeniu, wiele obiektów danych i informacje o zdarzeniach w pliku dziennika.

TraceEvent(TraceEventCache, String, TraceEventType, Int32, String, Object[])

Zapisuje informacje śledzenia, sformatowany komunikat i informacje o zdarzeniach w pliku dziennika.

TraceEvent(TraceEventCache, String, TraceEventType, Int32, String)

Zapisuje informacje śledzenia, komunikat i informacje o zdarzeniu do pliku dziennika.

TraceEvent(TraceEventCache, String, TraceEventType, Int32)

Zapisuje informacje o śledzeniu i zdarzeniu do określonych danych wyjściowych odbiornika.

(Odziedziczone po TraceListener)
TraceTransfer(TraceEventCache, String, Int32, String, Guid)

Zapisuje informacje śledzenia, w tym tożsamość powiązanego działania, komunikatu i informacji o zdarzeniu do pliku dziennika.

Write(Object, String)

Zapisuje nazwę kategorii i wartość metody obiektu ToString() do odbiornika tworzonego podczas implementowania TraceListener klasy.

(Odziedziczone po TraceListener)
Write(Object)

Zapisuje wartość metody obiektu ToString() w odbiorniku tworzonym podczas implementowania TraceListener klasy .

(Odziedziczone po TraceListener)
Write(String, String)

Zapisuje nazwę kategorii i komunikat do odbiornika utworzonego podczas implementowania TraceListener klasy.

(Odziedziczone po TraceListener)
Write(String)

Zapisuje komunikat w pliku dziennika bez podawania dodatkowych informacji kontekstowych.

WriteIndent()

Zapisuje wcięcie do odbiornika utworzonego podczas implementowania tej klasy i resetuje NeedIndent właściwość do falseklasy .

(Odziedziczone po TraceListener)
WriteLine(Object, String)

Zapisuje nazwę kategorii i wartość metody obiektu ToString() do odbiornika utworzonego podczas implementowania TraceListener klasy, a następnie terminator wiersza.

(Odziedziczone po TraceListener)
WriteLine(Object)

Zapisuje wartość metody obiektu ToString() do odbiornika utworzonego podczas implementowania TraceListener klasy, a następnie terminator wiersza.

(Odziedziczone po TraceListener)
WriteLine(String, String)

Zapisuje nazwę kategorii i komunikat do odbiornika utworzonego TraceListener podczas implementowania klasy, po którym następuje terminator wiersza.

(Odziedziczone po TraceListener)
WriteLine(String)

Zapisuje komunikat, po którym następuje bieżący terminator wiersza do pliku dziennika bez podawania dodatkowych informacji kontekstowych.

Dotyczy