Compartir a través de


EventSchemaTraceListener Clase

Definición

Dirige la salida de seguimiento o depuración de eventos de un extremo a otro a un archivo de registro codificado con XML y compatible con el esquema.

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

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar la EventSchemaTraceListener clase .

#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

Comentarios

La EventSchemaTraceListener clase proporciona seguimiento de eventos compatibles con el esquema de un extremo a otro. Puede usar el seguimiento de un extremo a otro para un sistema que tenga componentes heterogéneos que cruzan los límites de subproceso, AppDomain, proceso y equipo. Un esquema de eventos estandarizado permite el seguimiento a través de estos límites. El esquema habilita la adición de elementos personalizados compatibles con el esquema. Puede usar service Trace Viewer Tool (SvcTraceViewer.exe) para mostrar los datos del evento.

EventSchemaTraceListener está optimizado para registrar el rendimiento con compatibilidad implícita con el seguimiento sin bloqueos.

La EventSchemaTraceListener clase convierte la información de seguimiento y depuración en una secuencia de texto codificada en XML. La descripción de la salida XML se muestra en las tablas más adelante en esta sección.

Puede crear un EventSchemaTraceListener objeto en el código. Como alternativa, para las aplicaciones de .NET Framework, puede habilitar o deshabilitar un EventSchemaTraceListener objeto a través del archivo de configuración de la aplicación y, a continuación, usar el objeto configurado EventSchemaTraceListener en la aplicación. Para obtener información sobre el uso de archivos de configuración para el seguimiento y la depuración en aplicaciones de .NET Framework, consulte Esquema de configuración de seguimiento y depuración.

Para configurar un EventSchemaTraceListener objeto en una aplicación de .NET Framework, modifique el archivo de configuración que corresponde al nombre de la aplicación. En este archivo, puede agregar, quitar o establecer las propiedades de un agente de escucha. El archivo de configuración debe tener el formato siguiente:

<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 clase hereda la Filter propiedad de la clase TraceListenerbase . La Filter propiedad permite un nivel adicional de filtrado de salida de seguimiento en el agente de escucha. Si hay un filtro presente, los Trace métodos del agente de escucha de seguimiento llaman al ShouldTrace método del filtro para determinar si se debe emitir el seguimiento.

Si se intenta escribir en un archivo que se usa o no está disponible, se agrega automáticamente un sufijo GUID al nombre de archivo.

Nota:

Los métodos de agente de escucha están diseñados para llamarse mediante métodos de las Debugclases , Tracey TraceSource . No llame a los métodos de escucha directamente desde el código de la aplicación. El EventSchemaTraceListener agente de escucha está pensado principalmente para su uso por parte de la TraceSource clase .

En la tabla siguiente se describen los elementos y atributos de la salida XML.

Elemento Atributos Salida Notas
CallStack Ninguno Depende de la presencia de la Callstack marca en la TraceOutputOptions propiedad . Caracteres especiales como > o < se reemplazan por secuencias de escape. Consulte la tabla de traducción de caracteres de escape en la tabla siguiente.
Computer Ninguno Siempre presente. Este elemento representa el valor de la MachineName propiedad .
Correlation ActivityID Siempre presente. Si ActivityID no se especifica, el valor predeterminado es un GUID vacío.
RelatedActivityID Depende de la presencia del relatedActivityId parámetro en la llamada al Trace método. El RelatedActivityID atributo corresponde al relatedActivityId parámetro del TraceTransfer método .
Data Ninguno Siempre presente. Este elemento representa la entrada de parámetros (data). Se proporciona un elemento para cada objeto de datos. En el caso de los registros de eventos, el Data elemento contiene datos XML con escape. En el caso de los registros de datos, el Data elemento contiene datos sin escape. La salida del registro de datos usa el ToString método de los objetos de datos pasados.
Event Ninguno Siempre presente. Este elemento contiene un evento de seguimiento.
EventData Ninguno Presente para los registros de eventos. Este elemento representa la entrada de parámetros (message, args). Contiene Data elementos con datos XML de escape creados mediante una llamada al TraceEvent método .
EventID Ninguno Siempre presente. Este elemento representa la entrada de parámetros (id).
Execution ProcessID Depende de la presencia de la ProcessId marca en la TraceOutputOptions propiedad . El ProcessID atributo se especifica en .TraceEventCache
ThreadID Presente cuando ProcessID está presente. El ThreadID atributo se especifica en .TraceEventCache
Level Ninguno Siempre presente. Este elemento representa la entrada de parámetro (el valor numérico de eventType). Los valores de parámetro que son mayores de 255 son resultados como un nivel 8, que representa TraceEventType.Information. Los tipos Criticalde evento de seguimiento , Error, Warning, Informationy Verbose son resultados como niveles 1, 2, 4, 8 y 10, respectivamente.
LogicalOperationStack Ninguno Depende de la presencia de la LogicalOperationStack marca en la TraceOutputOptions propiedad . Solo puede existir una operación lógica. Por lo tanto, los valores se escriben como LogicalOperation nodos bajo el LogicalOperationStack elemento .
OpCode Ninguno Presente cuando Level es mayor que 255. Este elemento representa los tipos de eventos Trace que tienen valores numéricos mayores que 255. Start, Stop, Suspend, Resumeo Transfer son resultados como niveles 1, 2, 4, 8 y 10, respectivamente.
Provider GUID Siempre presente. Siempre vacía.
RenderingInfo Culture Siempre presente. Este atributo representa una cadena de recurso para el tipo de evento. Siempre es "en-EN\".
System Name Siempre presente.
TimeCreated SystemTime Depende de la presencia de la DateTime marca en la TraceOutputOptions propiedad . La hora es el valor de la TraceEventCache.DateTime propiedad . Esta propiedad se expresa como hora universal coordinada
TimeStamp Ninguno Depende de la presencia de la Timestamp marca en la TraceOutputOptions propiedad . Este elemento se especifica en .TraceEventCache
UserData Ninguno Presente para los registros de datos. Este elemento contiene Data elementos con datos proporcionados por el usuario sin escape de un TraceData método .

En la tabla siguiente se muestran los caracteres que se escapen en la salida XML. El escape se produce en todos los elementos y atributos, excepto en el elemento , que contiene datos proporcionados por el UserData usuario y sin escape. El UserData elemento es el resultado de las llamadas al TraceData método .

Carácter de escape Importancia
& &
< <
> >
" "
|'
0xD
0xA

Constructores

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

Inicializa una nueva instancia de la EventSchemaTraceListener clase con el nombre especificado y el tamaño de búfer especificado, utilizando el archivo especificado con la directiva de retención de registros, el tamaño máximo y el recuento de archivos especificados como destinatario de la salida de depuración y seguimiento.

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

Inicializa una nueva instancia de la EventSchemaTraceListener clase con el nombre especificado y el tamaño de búfer especificado, utilizando el archivo especificado con la directiva de retención de registros especificada y el tamaño máximo como destinatario de la salida de depuración y seguimiento.

EventSchemaTraceListener(String, String, Int32, TraceLogRetentionOption)

Inicializa una nueva instancia de la EventSchemaTraceListener clase con el nombre especificado y el tamaño de búfer especificado, utilizando el archivo especificado con la directiva de retención de registros especificada como destinatario de la salida de depuración y seguimiento.

EventSchemaTraceListener(String, String, Int32)

Inicializa una nueva instancia de la EventSchemaTraceListener clase con el nombre especificado y el tamaño de búfer especificado, utilizando el archivo especificado como destinatario de la depuración y la salida de seguimiento.

EventSchemaTraceListener(String, String)

Inicializa una nueva instancia de la EventSchemaTraceListener clase con el nombre especificado, utilizando el archivo especificado como destinatario de la salida de depuración y seguimiento.

EventSchemaTraceListener(String)

Inicializa una nueva instancia de la EventSchemaTraceListener clase utilizando el archivo especificado como destinatario de la depuración y la salida de seguimiento.

Propiedades

Nombre Description
Attributes

Obtiene los atributos de agente de escucha de seguimiento personalizados definidos en el archivo de configuración de la aplicación.

(Heredado de TraceListener)
BufferSize

Obtiene el tamaño del búfer de salida.

Filter

Obtiene o establece el filtro de seguimiento para el agente de escucha de seguimiento.

(Heredado de TraceListener)
IndentLevel

Obtiene o establece el nivel de sangría.

(Heredado de TraceListener)
IndentSize

Obtiene o establece el número de espacios en una sangría.

(Heredado de TraceListener)
IsThreadSafe

Obtiene un valor que indica si el agente de escucha de seguimiento es seguro para subprocesos.

MaximumFileSize

Obtiene el tamaño máximo del archivo de registro.

MaximumNumberOfFiles

Obtiene el número máximo de archivos de registro.

Name

Obtiene o establece un nombre para este TraceListenerobjeto .

(Heredado de TraceListener)
NeedIndent

Obtiene o establece un valor que indica si se va a sangr la salida.

(Heredado de TraceListener)
TraceLogRetentionOption

Obtiene la opción de retención del registro de seguimiento para el archivo.

TraceOutputOptions

Obtiene o establece las opciones de salida de seguimiento.

(Heredado de TraceListener)
Writer

Obtiene o establece el escritor de texto subyacente que escribe en el archivo de registro.

Métodos

Nombre Description
Close()

Cierra el archivo de registro de este agente de escucha para que ya no reciba la salida de seguimiento o depuración.

CreateObjRef(Type)

Crea un objeto que contiene toda la información pertinente necesaria para generar un proxy usado para comunicarse con un objeto remoto.

(Heredado de MarshalByRefObject)
Dispose()

Libera todos los recursos usados por .TraceListener

(Heredado de TraceListener)
Dispose(Boolean)

Elimina este TextWriterTraceListener objeto.

(Heredado de TextWriterTraceListener)
Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
Fail(String, String)

Escribe información de error, incluido un mensaje de error básico y un mensaje de error detallado, en el archivo de registro.

Fail(String)

Emite un mensaje de error al agente de escucha que crea al implementar la TraceListener clase .

(Heredado de TraceListener)
Flush()

Hace que los datos almacenados en búfer se escriban en el registro de este agente de escucha.

GetHashCode()

Actúa como función hash predeterminada.

(Heredado de Object)
GetLifetimeService()
Obsoletos.

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
GetSupportedAttributes()

Obtiene los atributos de configuración XML personalizados que admite el agente de escucha de seguimiento.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
InitializeLifetimeService()
Obsoletos.

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
MemberwiseClone(Boolean)

Crea una copia superficial del objeto actual MarshalByRefObject .

(Heredado de MarshalByRefObject)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
TraceData(TraceEventCache, String, TraceEventType, Int32, Object)

Escribe información de seguimiento, un único objeto de datos e información de eventos en el archivo de registro.

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

Escribe información de seguimiento, varios objetos de datos e información de eventos en el archivo de registro.

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

Escribe información de seguimiento, un mensaje con formato e información de eventos en el archivo de registro.

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

Escribe información de seguimiento, un mensaje e información de eventos en el archivo de registro.

TraceEvent(TraceEventCache, String, TraceEventType, Int32)

Escribe información de seguimiento y eventos en la salida específica del agente de escucha.

(Heredado de TraceListener)
TraceTransfer(TraceEventCache, String, Int32, String, Guid)

Escribe información de seguimiento, incluida la identidad de una actividad relacionada, un mensaje e información de eventos, en el archivo de registro.

Write(Object, String)

Escribe un nombre de categoría y el valor del método del ToString() objeto en el agente de escucha que crea al implementar la TraceListener clase .

(Heredado de TraceListener)
Write(Object)

Escribe el valor del método del ToString() objeto en el agente de escucha que cree al implementar la TraceListener clase .

(Heredado de TraceListener)
Write(String, String)

Escribe un nombre de categoría y un mensaje en el agente de escucha que crea al implementar la TraceListener clase .

(Heredado de TraceListener)
Write(String)

Escribe un mensaje en el archivo de registro sin proporcionar información de contexto adicional.

WriteIndent()

Escribe la sangría en el agente de escucha que crea al implementar esta clase y restablece la NeedIndent propiedad en false.

(Heredado de TraceListener)
WriteLine(Object, String)

Escribe un nombre de categoría y el valor del método del ToString() objeto en el agente de escucha que se crea al implementar la TraceListener clase, seguido de un terminador de línea.

(Heredado de TraceListener)
WriteLine(Object)

Escribe el valor del método del ToString() objeto en el agente de escucha que crea al implementar la TraceListener clase, seguido de un terminador de línea.

(Heredado de TraceListener)
WriteLine(String, String)

Escribe un nombre de categoría y un mensaje en el agente de escucha que crea al implementar la TraceListener clase, seguido de un terminador de línea.

(Heredado de TraceListener)
WriteLine(String)

Escribe un mensaje seguido del terminador de línea actual en el archivo de registro sin proporcionar información de contexto adicional.

Se aplica a