Condividi tramite


XmlWriterTraceListener Classe

Definizione

Indirizza l'output di tracciatura o di debug come dati con codifica XML a una classe TextWriter o Stream, ad esempio una classe FileStream.

public ref class XmlWriterTraceListener : System::Diagnostics::TextWriterTraceListener
public class XmlWriterTraceListener : System.Diagnostics.TextWriterTraceListener
type XmlWriterTraceListener = class
    inherit TextWriterTraceListener
Public Class XmlWriterTraceListener
Inherits TextWriterTraceListener
Ereditarietà

Esempio

Nell'esempio di codice seguente viene illustrato l'uso della XmlWriterTraceListener classe per scrivere dati di escape e non preceduti da caratteri di escape nei log dei file.

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();
    }
}
Imports System.IO
Imports System.Xml
Imports System.Xml.XPath
Imports System.Diagnostics



Class testClass
    
    Shared Sub Main() 
        File.Delete("NotEscaped.xml")
        Dim ts As New TraceSource("TestSource")
        ts.Listeners.Add(New XmlWriterTraceListener("NotEscaped.xml"))
        ts.Switch.Level = SourceLevels.All
        Dim testString As String = "<Test><InnerElement Val=""1"" /><InnerElement Val=""Data""/><AnotherElement>11</AnotherElement></Test>"
        Dim myXml As New XmlTextReader(New StringReader(testString))
        Dim xDoc As New XPathDocument(myXml)
        Dim myNav As XPathNavigator = xDoc.CreateNavigator()
        ts.TraceData(TraceEventType.Error, 38, myNav)

        ts.Flush()
        ts.Close()
        
        File.Delete("Escaped.xml")
        Dim ts2 As 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()
    
    End Sub
End Class

Commenti

Nota

Per creare un'istanza della classe è necessario disporre dell'autorizzazione XmlWriterTraceListener del codice non gestito.

La XmlWriterTraceListener classe converte le informazioni di traccia e debug in un flusso di testo con codifica XML. La descrizione dell'output XML viene visualizzata nelle tabelle seguenti. È possibile utilizzare lo strumento Visualizzatore traccia servizio (SvcTraceViewer.exe) per visualizzare l'output XML.

È possibile creare un XmlWriterTraceListener oggetto nel codice. In alternativa, per le app .NET Framework è possibile abilitare o disabilitare un XmlWriterTraceListener tramite il file di configurazione dell'applicazione e quindi usare il configurato XmlWriterTraceListener nell'applicazione. Per configurare un XmlWriterTraceListeneroggetto , modificare il file di configurazione corrispondente al nome dell'applicazione. In questo file è possibile aggiungere o rimuovere un listener, impostare le proprietà per un listener o rimuovere listener. Il file di configurazione deve essere formattato come nell'esempio seguente.

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

La XmlWriterTraceListener classe eredita la Filter proprietà dalla classe TraceListenerbase . La Filter proprietà consente un ulteriore livello di filtro dell'output di traccia nel listener. Se è presente un filtro, i Trace metodi del listener di traccia chiamano il ShouldTrace metodo del filtro per determinare se generare la traccia.

Nota

Se si tenta di scrivere in un file in uso o non disponibile, il nome del file viene preceduto automaticamente da un GUID.

Nota

I metodi listener devono essere chiamati dai metodi delle Debugclassi , Tracee TraceSource . I metodi del listener non devono essere chiamati direttamente dal codice dell'applicazione. Il XmlWriterTraceListener listener è destinato principalmente all'uso della TraceSource classe . I Write metodi e WriteLine possono essere chiamati dalle Trace classi e Debug e i valori predefiniti vengono forniti per gli elementi XML per i quali Trace non Debug vengono forniti valori.

Nella tabella seguente vengono descritti gli elementi e gli attributi dell'output XML.

Elemento Attributi Output Note
CallStack nessuno Dipende dalla presenza del Callstack flag nella TraceOutputOptions proprietà . I caratteri speciali, > ad esempio o < , vengono sostituiti con sequenze di escape. Vedere la tabella di conversione dei caratteri di escape riportata di seguito.
Computer nessuno Sempre presente. Il valore della proprietà MachineName.
Correlation ActivityID Sempre presente Se non specificato, il valore predefinito è un GUID vuoto.
RelatedActivityID Dipende dalla presenza del relatedActivityId parametro nella chiamata al metodo Trace. Il parametro relatedActivityId del metodo TraceTransfer.
DataItem nessuno Dipende dal data parametro del TraceData metodo . Questo elemento può contenere una matrice di elementi o un elemento, quindi i valori vengono scritti come set di DataItem nodi sotto l'elemento TraceData .

L'output dei dati usa il ToString metodo degli oggetti dati passati.
EventID nessuno Sempre presente. Input del parametro (id).
Execution ProcessName Sempre presente. TraceEventCacheDa .
ProcessID Sempre presente. Dall'oggetto TraceEventCache.
ThreadID Sempre presente. Dall'oggetto TraceEventCache.
Level nessuno Sempre presente. Input del parametro (valore numerico di eventType). I valori dei parametri maggiori di 255 vengono restituiti come 255.
LogicalOperationStack nessuno Dipende dalla presenza del LogicalOperationStack flag nella TraceOutputOptions proprietà. È possibile usare più operazioni logiche, quindi i valori vengono scritti come LogicalOperation nodi nell'elemento LogicalOperationStack .
Message nessuno Dipende dalla presenza di un messaggio nella chiamata al metodo Trace. Questo elemento è un messaggio formattato se vengono forniti argomenti di formattazione.
Source Name Sempre presente. Input dei parametri.
SubType Name Sempre presente. Input dei parametri.
TimeCreated SystemTime Sempre presente. Se non presente in TraceEventCache, il valore predefinito è l'ora corrente.
TimeStamp nessuno Dipende dalla presenza del Timestamp flag nella TraceOutputOptions proprietà. Dall'oggetto TraceEventCache.
Type nessuno Sempre presente. Sempre il valore 3.

Nella tabella seguente vengono illustrati i caratteri di escape nell'output XML. L'eliminazione si verifica in tutti gli elementi e gli attributi, ad eccezione dell'elemento DataItem , che non viene eseguito l'escape se l'oggetto passato al data parametro del TraceData metodo è un XPathNavigator oggetto. Se viene XPathNavigator usato un oggetto per l'oggetto dati, il metodo viene chiamato e l'intero MoveToRoot nodo radice viene tracciato come dati non distribuiti.

Caratteri di escape Valore
& &
< <
> >
" "
|'
0xD
0xA

Costruttori

XmlWriterTraceListener(Stream)

Inizializza una nuova istanza della classe XmlWriterTraceListener, utilizzando il flusso specificato come destinatario dell'output di debug o di tracciatura.

XmlWriterTraceListener(Stream, String)

Inizializza una nuova istanza della classe XmlWriterTraceListener con il nome specificato, utilizzando il flusso specificato come destinatario dell'output di debug o di tracciatura.

XmlWriterTraceListener(String)

Inizializza una nuova istanza della classe XmlWriterTraceListener, utilizzando il file specificato come destinatario dell'output di debug o di tracciatura.

XmlWriterTraceListener(String, String)

Inizializza una nuova istanza della classe XmlWriterTraceListener con il nome specificato, utilizzando il file specificato come destinatario dell'output di debug o di tracciatura.

XmlWriterTraceListener(TextWriter)

Inizializza una nuova istanza della classe XmlWriterTraceListener, utilizzando il writer specificato come destinatario dell'output di debug o di tracciatura.

XmlWriterTraceListener(TextWriter, String)

Inizializza una nuova istanza della classe XmlWriterTraceListener con il nome specificato, utilizzando il writer specificato come destinatario dell'output di debug o di tracciatura.

Proprietà

Attributes

Ottiene gli attributi personalizzati del listener di traccia definiti nel file di configurazione dell'applicazione.

(Ereditato da TraceListener)
Filter

Ottiene o imposta il filtro di traccia per il listener di traccia.

(Ereditato da TraceListener)
IndentLevel

Ottiene o imposta il livello di rientro.

(Ereditato da TraceListener)
IndentSize

Ottiene o imposta il numero di spazi in un rientro.

(Ereditato da TraceListener)
IsThreadSafe

Ottiene un valore che indica se il listener di traccia è thread-safe.

(Ereditato da TraceListener)
Name

Ottiene o imposta un nome per l'oggetto TraceListener.

(Ereditato da TraceListener)
NeedIndent

Ottiene o imposta un valore che indica se impostare il rientro dell'output.

(Ereditato da TraceListener)
TraceOutputOptions

Ottiene o imposta le opzioni dell'output di traccia.

(Ereditato da TraceListener)
Writer

Ottiene o imposta il writer di testo che riceve l'output di tracciatura o di debug.

(Ereditato da TextWriterTraceListener)

Metodi

Close()

Chiude la classe Writer per questo listener in modo che non riceva più output di tracciatura o di debug.

CreateObjRef(Type)

Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto.

(Ereditato da MarshalByRefObject)
Dispose()

Rilascia tutte le risorse usate da TraceListener.

(Ereditato da TraceListener)
Dispose(Boolean)

Elimina questo oggetto TextWriterTraceListener.

(Ereditato da TextWriterTraceListener)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
Fail(String)

Genera un messaggio di errore nel listener creato durante l'implementazione della classe TraceListener.

(Ereditato da TraceListener)
Fail(String, String)

Scrive informazioni di traccia, compresi un messaggio di errore e un messaggio di errore dettagliato, nel file o nel flusso.

Flush()

Scarica il buffer di output per la classe Writer.

(Ereditato da TextWriterTraceListener)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetLifetimeService()
Obsoleti.

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.

(Ereditato da MarshalByRefObject)
GetSupportedAttributes()

Ottiene gli attributi personalizzati supportati dal listener di traccia.

(Ereditato da TraceListener)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
InitializeLifetimeService()
Obsoleti.

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.

(Ereditato da MarshalByRefObject)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
TraceData(TraceEventCache, String, TraceEventType, Int32, Object)

Scrive informazioni di traccia, un oggetto dati e informazioni di evento nel file o nel flusso.

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

Scrive informazioni di traccia, oggetti dati e informazioni di evento nel file o nel flusso.

TraceEvent(TraceEventCache, String, TraceEventType, Int32)

Scrive le informazioni di traccia e di evento nell'output specifico del listener.

(Ereditato da TraceListener)
TraceEvent(TraceEventCache, String, TraceEventType, Int32, String)

Scrive informazioni di traccia, un messaggio e informazioni di evento nel file o nel flusso.

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

Scrive informazioni di traccia, un messaggio formattato e informazioni di evento nel file o nel flusso.

TraceTransfer(TraceEventCache, String, Int32, String, Guid)

Scrive informazioni di traccia, compresi l'identità di un'attività correlata, un messaggio e informazioni di evento, nel file o nel flusso.

Write(Object)

Scrive il valore del metodo ToString() dell'oggetto nel listener creato durante l'implementazione della classe TraceListener.

(Ereditato da TraceListener)
Write(Object, String)

Scrive un nome di categoria e il valore del metodo ToString() dell'oggetto nel listener creato durante l'implementazione della classe TraceListener.

(Ereditato da TraceListener)
Write(String)

Scrive nel file o nel flusso un messaggio testuale senza informazioni di contesto aggiuntive.

Write(String, String)

Scrive un nome di categoria e un messaggio nel listener creato durante l'implementazione della classe TraceListener.

(Ereditato da TraceListener)
WriteIndent()

Inserisce il rientro nel listener creato quando si implementa questa classe e reimposta la proprietà NeedIndent su false.

(Ereditato da TraceListener)
WriteLine(Object)

Scrive il valore del metodo ToString() dell'oggetto nel listener creato durante l'implementazione della classe TraceListener, seguito da un terminatore di riga.

(Ereditato da TraceListener)
WriteLine(Object, String)

Scrive un nome di categoria e il valore del metodo ToString() dell'oggetto nel listener creato durante l'implementazione della classe TraceListener, seguito da un terminatore di riga.

(Ereditato da TraceListener)
WriteLine(String)

Scrive nel file o nel flusso un messaggio testuale privo di informazioni di contesto aggiuntive, seguito dal terminatore di riga corrente.

WriteLine(String, String)

Scrive un nome di categoria e un messaggio nel listener creato durante l'implementazione della classe TraceListener, seguiti da un terminatore di riga.

(Ereditato da TraceListener)

Si applica a