EventSchemaTraceListener Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 |
| 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. |