Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

XmlWriterTraceListener-Klasse

Leitet die Ablaufverfolgungs- oder Debugausgabe als XML-codierte Daten an einen TextWriter oder Stream, z. B. FileStream.

Namespace: System.Diagnostics
Assembly: System (in system.dll)

public class XmlWriterTraceListener : TextWriterTraceListener
public class XmlWriterTraceListener extends TextWriterTraceListener
public class XmlWriterTraceListener extends TextWriterTraceListener
Nicht zutreffend.

HinweisHinweis:

Sie müssen über eine Berechtigung für nicht verwalteten Code verfügen, um eine Instanz der XmlWriterTraceListener-Klasse zu erstellen.

HinweisHinweis:

Das auf diese Klasse angewendete HostProtectionAttribute-Attribut besitzt den Resources-Eigenschaftenwert Synchronization. Das HostProtectionAttribute hat keine Auswirkungen auf Desktopanwendungen (die normalerweise durch Doppelklicken auf ein Symbol, Eingeben eines Befehls oder eines URL in einem Browser gestartet werden). Weitere Informationen finden Sie unter der HostProtectionAttribute-Klasse oder unter SQL Server-Programmierung und Hostschutzattribute.

Die XmlWriterTraceListener-Klasse konvertiert Ablaufverfolgungs- und Debuginformationen in einen XML-codierten Textstream. Die Beschreibung der XML-Ausgabe sind in den folgenden Tabellen enthalten.

Sie können einen XmlWriterTraceListener über die Anwendungskonfigurationsdatei aktivieren oder deaktivieren und anschließend den konfigurierten XmlWriterTraceListener in der Anwendung verwenden. Sie können einen XmlWriterTraceListener auch im Code erstellen.

Zum Konfigurieren von XmlWriterTraceListener bearbeiten Sie die Konfigurationsdatei, die dem Namen der Anwendung entspricht. In dieser Datei können Sie einen Listener hinzufügen oder entfernen, die Eigenschaften für einen Listener festlegen und Listener entfernen. Die Konfigurationsdatei sollte wie im folgenden Beispiel formatiert werden.

<configuration>
  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="xmlListener" 
          type="System.Diagnostics.XmlWriterTraceListener" 
          initializeData="xmlOutput.xml" 
          traceOutputOptions="ProcessId, DateTime" />
        <remove name="Default" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

Die XmlWriterTraceListener-Klasse erbt die Filter-Eigenschaft von der TraceListener-Basisklasse. Die Filter-Eigenschaft ermöglicht eine zusätzliche Filterebene der Ablaufverfolgungsausgabe für den Listener. Wenn ein Filter vorhanden ist, rufen die Trace-Methoden des Ablaufverfolgungslisteners die ShouldTrace-Methode des Filters auf, um zu bestimmen, ob die Ablaufverfolgung ausgegeben werden soll.

HinweisHinweis:

Wenn versucht wird, in eine Datei zu schreiben, die bereits verwendet wird oder die nicht verfügbar ist, wird dem Dateinamen automatisch eine GUID vorangestellt.

HinweisHinweis:

Listenermethoden sind für den Aufruf durch Methoden der Debug-Klasse, der Trace-Klasse und der TraceSource-Klasse bestimmt. Die Listenermethoden sind nicht für den direkten Aufruf aus dem Anwendungscode heraus bestimmt. Der XmlWriterTraceListener-Listener ist hauptsächlich zur Verwendung durch die TraceSource-Klasse bestimmt. Die Write-Methode und die WriteLine-Methode können von der Trace-Klasse und der Debug-Klasse aufgerufen werden, und es werden Standardwerte für die XML-Elemente bereitgestellt, für die Trace und Debug keine Werte bereitstellen,.

In der folgenden Tabelle werden die Elemente und Attribute der XML-Ausgabe beschrieben.

Element

Attribute

Ausgabe

Hinweise

CallStack

Keine

Hängt vom Vorhandensein des Callstack-Flags in der TraceOutputOptions-Eigenschaft ab.

Sonderzeichen wie > oder < werden durch Escapesequenzen ersetzt. Weitere Informationen finden Sie in der folgenden Tabelle mit Übersetzungen von Escapezeichen.

Computer

Keine

Immer vorhanden.

Der Wert der MachineName-Eigenschaft.

Correlation

ActivityID

Immer vorhanden.

Wenn keine Angabe erfolgt, ist der Standardwert eine leere GUID.

RelatedActivityID

Hängt vom Vorhandensein des relatedActivityId-Parameters im Aufruf der Ablaufverfolgungsmethode ab.

Der relatedActivityId-Parameter der TraceTransfer-Methode.

DataItem

Keine

Hängt vom data-Parameter der TraceData-Methode ab.

Dieses Element kann ein Array von Elementen oder ein Element enthalten, sodass die Werte als Gruppe von DataItem-Knoten unter dem TraceData-Element geschrieben werden.

Die Datenausgabe verwendet die ToString-Methode der übergebenen Datenobjekte.

EventID

Keine

Immer vorhanden.

Parametereingabe (id).

Execution

ProcessName

Immer vorhanden.

Aus dem TraceEventCache.

ProcessID

Immer vorhanden.

Aus dem TraceEventCache. Wenn ProcessID unter den Betriebssystemen Windows 98 und Windows Me größer als 2.147.483.647 ist, handelt es sich hier um eine positive Darstellung einer negativen Zahl und sollte konvertiert werden, um den richtigen Prozessbezeichner zu erhalten.

ThreadID

Immer vorhanden.

Aus dem TraceEventCache.

Level

Keine

Immer vorhanden.

Parametereingabe (der numerische Wert von eventType). Parameterwerte über 255 werden als 255 ausgegeben.

LogicalOperationStack

Keine

Hängt vom Vorhandensein des LogicalOperationStack-Flags in der TraceOutputOptions-Eigenschaft ab.

Es kann mehr als nur einen logischen Vorgang geben, daher werden die Werte als LogicalOperation-Knoten unter dem LogicalOperationStack-Element geschrieben.

Message

Keine

Hängt vom Vorhandensein einer Meldung im Aufruf der Ablaufverfolgungsmethode ab.

Dieses Element ist eine formatierte Meldung, wenn formatierte Argumente bereitgestellt werden.

Source

Name

Immer vorhanden.

Parametereingabe.

SubType

Name

Immer vorhanden.

Parametereingabe.

TimeCreated

SystemTime

Immer vorhanden.

Wenn dies nicht im TraceEventCache vorhanden ist, ist der Standardwert die aktuelle Zeit.

TimeStamp

Keine

Hängt vom Vorhandensein des Timestamp-Flags in der TraceOutputOptions-Eigenschaft ab.

Aus dem TraceEventCache.

Type

Keine

Immer vorhanden.

Immer der Wert 3.

In der folgenden Tabelle sind die Zeichen enthalten, die in der XML-Ausgabe mit Escapezeichen versehen werden. Escapezeichen werden in allen Elementen und Attributen mit Ausnahme des DataItem-Elements verwendet, das keine Escapezeichen enthält, wenn das im data-Parameter der TraceData-Methode übergebene Objekt ein XPathNavigator-Objekt ist. Wenn für das Datenobjekt ein XPathNavigator verwendet wird, wird die MoveToRoot-Methode aufgerufen, und der gesamte Stammknoten wird als Daten ohne Escapezeichen weitergeführt.

Escapezeichen

Wert

&

&amp;

<

&lt;

>

&gt;

"

&quot;

\

&apos;

0xD

&#xD;

0xA

&#xA;

Im folgenden Codebeispiel wird die Verwendung der XmlWriterTraceListener-Klasse zum Schreiben von Daten mit und ohne Escapezeichen in Dateiprotokolle veranschaulicht.

using System;
using System.IO;
using System.Xml;
using System.Xml.XPath;
using System.Diagnostics;

class testClass
{
    static void Main()
    {
        File.Delete("NotEscaped.xml");
        TraceSource ts = new TraceSource("TestSource");
        ts.Listeners.Add(new XmlWriterTraceListener("NotEscaped.xml"));
        ts.Switch.Level = SourceLevels.All;
        string testString = "<Test><InnerElement Val=\"1\" /><InnerElement Val=\"Data\"/><AnotherElement>11</AnotherElement></Test>";
        XmlTextReader myXml = new XmlTextReader(new StringReader(testString));
        XPathDocument xDoc = new XPathDocument(myXml);
        XPathNavigator myNav = xDoc.CreateNavigator();
        ts.TraceData(TraceEventType.Error, 38, myNav);

        ts.Flush();
        ts.Close();

        File.Delete("Escaped.xml");
        TraceSource ts2 = new TraceSource("TestSource2");
        ts2.Listeners.Add(new XmlWriterTraceListener("Escaped.xml"));
        ts2.Switch.Level = SourceLevels.All;
        ts2.TraceData(TraceEventType.Error, 38, testString);

        ts2.Flush();
        ts2.Close();
    }
}

System.Object
   System.MarshalByRefObject
     System.Diagnostics.TraceListener
       System.Diagnostics.TextWriterTraceListener
        System.Diagnostics.XmlWriterTraceListener

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows 98, Windows Server 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

Microsoft .NET Framework 3.0 wird unter Windows Vista, Microsoft Windows XP SP2 und Windows Server 2003 SP1 unterstützt.

.NET Framework

Unterstützt in: 3.0, 2.0
Anzeigen: