Condividi tramite


EventSchemaTraceListener Classe

Definizione

Indirizza l'output di traccia o debug di eventi end-to-end a un file di log con codifica XML conforme allo schema.

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

Esempio

Nell'esempio di codice seguente viene illustrato come usare la EventSchemaTraceListener classe .

#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

Commenti

La EventSchemaTraceListener classe fornisce la traccia degli eventi conformi allo schema end-to-end. È possibile usare la traccia end-to-end per un sistema con componenti eterogenei che attraversano thread, AppDomainprocessi e limiti del computer. Uno schema di eventi standardizzato abilita la traccia attraverso questi limiti. Lo schema abilita l'aggiunta di elementi personalizzati conformi allo schema. Per visualizzare i dati dell'evento, è possibile usare lo strumento Visualizzatore traccia del servizio (SvcTraceViewer.exe ).

EventSchemaTraceListener è ottimizzato per le prestazioni di registrazione con supporto implicito per la traccia senza blocchi.

La EventSchemaTraceListener 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 più avanti in questa sezione.

È possibile creare un EventSchemaTraceListener oggetto nel codice. In alternativa, per le app .NET Framework, è possibile abilitare o disabilitare un EventSchemaTraceListener oggetto tramite il file di configurazione dell'applicazione e quindi usare l'oggetto configurato EventSchemaTraceListener nell'applicazione. Per informazioni sull'uso dei file di configurazione per la traccia e il debug nelle app .NET Framework, vedere Schema delle impostazioni di traccia e debug.

Per configurare un EventSchemaTraceListener oggetto in un'app .NET Framework, modificare il file di configurazione corrispondente al nome dell'applicazione. In questo file è possibile aggiungere, rimuovere o impostare le proprietà per un listener. Il file di configurazione deve essere formattato come segue:

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

La EventSchemaTraceListener classe eredita la Filter proprietà dalla classe TraceListenerbase . La Filter proprietà consente un livello aggiuntivo 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.

Se si tenta di scrivere in un file in uso o non disponibile, al nome del file viene aggiunto automaticamente un suffisso GUID.

Annotazioni

I metodi del listener devono essere chiamati dai metodi delle Debugclassi , Tracee TraceSource . Non chiamare i metodi del listener direttamente dal codice dell'applicazione. Il EventSchemaTraceListener listener è destinato principalmente all'uso da parte della TraceSource classe .

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

Elemento Attributi Risultato 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 nella tabella successiva.
Computer Nessuno Sempre presente. Questo elemento rappresenta il valore della MachineName proprietà .
Correlation ActivityID Sempre presente. Se ActivityID non viene specificato, il valore predefinito è un GUID vuoto.
RelatedActivityID Dipende dalla presenza del relatedActivityId parametro nella chiamata al Trace metodo. L'attributo RelatedActivityID corrisponde al relatedActivityId parametro del TraceTransfer metodo .
Data Nessuno Sempre presente. Questo elemento rappresenta l'input del parametro (data). Viene fornito un elemento per ogni oggetto dati. Nel caso dei registri eventi, l'elemento Data contiene dati XML preceduti da escape. Nel caso dei log di dati, l'elemento Data contiene dati senza caratteri di escape. L'output del log dei dati usa il ToString metodo degli oggetti dati passati.
Event Nessuno Sempre presente. Questo elemento contiene un evento di traccia.
EventData Nessuno Presente per i registri eventi. Questo elemento rappresenta l'input del parametro (message, args). Contiene Data elementi con dati XML di escape creati chiamando il TraceEvent metodo .
EventID Nessuno Sempre presente. Questo elemento rappresenta l'input del parametro (id).
Execution ProcessID Dipende dalla presenza del ProcessId flag nella TraceOutputOptions proprietà . L'attributo ProcessID viene specificato in TraceEventCache.
ThreadID Presente quando ProcessID è presente. L'attributo ThreadID viene specificato in TraceEventCache.
Level Nessuno Sempre presente. Questo elemento rappresenta l'input del parametro (il valore numerico di eventType). I valori dei parametri maggiori di 255 vengono restituiti come livello 8, che rappresenta TraceEventType.Information. I tipi di Criticalevento di traccia , , InformationErrorWarning, e Verbose vengono restituiti rispettivamente come livelli 1, 2, 4, 8 e 10.
LogicalOperationStack Nessuno Dipende dalla presenza del LogicalOperationStack flag nella TraceOutputOptions proprietà . Può esistere una sola operazione logica. Pertanto, i valori vengono scritti come LogicalOperation nodi sotto l'elemento LogicalOperationStack .
OpCode Nessuno Presente quando Level è maggiore di 255. Questo elemento rappresenta i tipi di evento Trace con valori numerici maggiori di 255. Start Suspend, Stop, Resume, o Transfer sono output rispettivamente come livelli 1, 2, 4, 8 e 10.
Provider GUID Sempre presente. Sempre vuoto.
RenderingInfo Culture Sempre presente. Questo attributo rappresenta una stringa di risorsa per il tipo di evento. È sempre "en-EN\".
System Name Sempre presente.
TimeCreated SystemTime Dipende dalla presenza del DateTime flag nella TraceOutputOptions proprietà . L'ora è il valore della TraceEventCache.DateTime proprietà . Questa proprietà è espressa come Coordinated Universal Time
TimeStamp Nessuno Dipende dalla presenza del Timestamp flag nella TraceOutputOptions proprietà . Questo elemento viene specificato in TraceEventCache.
UserData Nessuno Presente per i log dei dati. Questo elemento contiene Data elementi con dati senza caratteri di escape forniti dall'utente da un TraceData metodo.

Nella tabella seguente vengono illustrati i caratteri di escape nell'output XML. L'escape si verifica in tutti gli elementi e gli attributi, ad eccezione dell'elemento UserData , che contiene dati senza caratteri di escape forniti dall'utente. L'elemento UserData è il risultato delle chiamate al TraceData metodo .

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

Costruttori

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

Inizializza una nuova istanza della EventSchemaTraceListener classe con il nome specificato e le dimensioni del buffer specificate, utilizzando il file specificato con i criteri di conservazione dei log, le dimensioni massime e il numero di file specificati come destinatario dell'output di debug e traccia.

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

Inizializza una nuova istanza della EventSchemaTraceListener classe con il nome specificato e le dimensioni del buffer specificate, utilizzando il file specificato con i criteri di conservazione dei log specificati e le dimensioni massime come destinatario dell'output di debug e traccia.

EventSchemaTraceListener(String, String, Int32, TraceLogRetentionOption)

Inizializza una nuova istanza della EventSchemaTraceListener classe con il nome specificato e le dimensioni del buffer specificate, utilizzando il file specificato con i criteri di conservazione dei log specificati come destinatario dell'output di debug e traccia.

EventSchemaTraceListener(String, String, Int32)

Inizializza una nuova istanza della EventSchemaTraceListener classe con il nome e le dimensioni del buffer specificate, utilizzando il file specificato come destinatario dell'output di debug e traccia.

EventSchemaTraceListener(String, String)

Inizializza una nuova istanza della EventSchemaTraceListener classe con il nome specificato, utilizzando il file specificato come destinatario dell'output di debug e traccia.

EventSchemaTraceListener(String)

Inizializza una nuova istanza della EventSchemaTraceListener classe utilizzando il file specificato come destinatario dell'output di debug e traccia.

Proprietà

Nome Descrizione
Attributes

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

(Ereditato da TraceListener)
BufferSize

Ottiene le dimensioni del buffer di output.

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.

MaximumFileSize

Ottiene le dimensioni massime del file di log.

MaximumNumberOfFiles

Ottiene il numero massimo di file di log.

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

Ottiene l'opzione di conservazione del log di traccia per il file.

TraceOutputOptions

Ottiene o imposta le opzioni di output della traccia.

(Ereditato da TraceListener)
Writer

Ottiene o imposta il writer di testo sottostante che scrive nel file di log.

Metodi

Nome Descrizione
Close()

Chiude il file di log per questo listener in modo che non riceva più l'output di traccia o debug.

CreateObjRef(Type)

Crea un oggetto che contiene tutte le informazioni pertinenti necessarie per generare un proxy utilizzato per comunicare con un oggetto remoto.

(Ereditato da MarshalByRefObject)
Dispose()

Rilascia tutte le risorse usate da TraceListener.

(Ereditato da TraceListener)
Dispose(Boolean)

Elimina questo TextWriterTraceListener oggetto.

(Ereditato da TextWriterTraceListener)
Equals(Object)

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

(Ereditato da Object)
Fail(String, String)

Scrive informazioni sull'errore, inclusi un messaggio di errore di base e un messaggio di errore dettagliato, nel file di log.

Fail(String)

Genera un messaggio di errore al listener creato quando si implementa la TraceListener classe .

(Ereditato da TraceListener)
Flush()

Fa sì che i dati memorizzati nel buffer vengano scritti nel log per questo listener.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetLifetimeService()
Obsoleti.

Recupera l'oggetto servizio di durata corrente che controlla i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
GetSupportedAttributes()

Ottiene gli attributi di configurazione XML personalizzati supportati dal listener di traccia.

GetType()

Ottiene il 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 del Objectcorrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia superficiale dell'oggetto corrente MarshalByRefObject .

(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 singolo oggetto dati e informazioni sugli eventi nel file di log.

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

Scrive informazioni di traccia, più oggetti dati e informazioni sugli eventi nel file di log.

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

Scrive informazioni di traccia, un messaggio formattato e informazioni sugli eventi nel file di log.

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

Scrive le informazioni di traccia, un messaggio e le informazioni sugli eventi nel file di log.

TraceEvent(TraceEventCache, String, TraceEventType, Int32)

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

(Ereditato da TraceListener)
TraceTransfer(TraceEventCache, String, Int32, String, Guid)

Scrive informazioni di traccia, inclusa l'identità di un'attività correlata, un messaggio e le informazioni sugli eventi, nel file di log.

Write(Object, String)

Scrive un nome di categoria e il valore del metodo dell'oggetto ToString() nel listener creato quando si implementa la TraceListener classe .

(Ereditato da TraceListener)
Write(Object)

Scrive il valore del metodo dell'oggetto ToString() nel listener creato quando si implementa la TraceListener classe .

(Ereditato da TraceListener)
Write(String, String)

Scrive un nome di categoria e un messaggio nel listener creato quando si implementa la TraceListener classe .

(Ereditato da TraceListener)
Write(String)

Scrive un messaggio nel file di log senza fornire informazioni di contesto aggiuntive.

WriteIndent()

Scrive il rientro nel listener creato quando si implementa questa classe e la proprietà viene reimpostata NeedIndent su false.

(Ereditato da TraceListener)
WriteLine(Object, String)

Scrive un nome di categoria e il valore del metodo dell'oggetto ToString() nel listener creato quando si implementa la TraceListener classe, seguita da un terminatore di riga.

(Ereditato da TraceListener)
WriteLine(Object)

Scrive il valore del metodo dell'oggetto ToString() nel listener creato quando si implementa la TraceListener classe, seguita da un terminatore di riga.

(Ereditato da TraceListener)
WriteLine(String, String)

Scrive un nome di categoria e un messaggio nel listener creato quando si implementa la TraceListener classe , seguito da un terminatore di riga.

(Ereditato da TraceListener)
WriteLine(String)

Scrive un messaggio seguito dal terminatore di riga corrente nel file di log senza fornire informazioni di contesto aggiuntive.

Si applica a