Exportar (0) Imprimir
Expandir todo

EventSchemaTraceListener (Clase)

Actualización: noviembre 2007

Dirige la salida de trazas o la depuración de eventos de un extremo a otro a un archivo de registro con codificación XML conforme al esquema.

Espacio de nombres:  System.Diagnostics
Ensamblado:  System.Core (en System.Core.dll)

[HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort = true)]
[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true)]
public class EventSchemaTraceListener : TextWriterTraceListener
/** @attribute HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort = true) */
/** @attribute HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true) */
public class EventSchemaTraceListener extends TextWriterTraceListener
public class EventSchemaTraceListener extends TextWriterTraceListener

Bb354295.alert_note(es-es,VS.90).gifNota:

El atributo HostProtectionAttribute aplicado a este tipo o miembro tiene el siguiente valor de la propiedad Resources: MayLeakOnAbort | Synchronization. El atributo HostProtectionAttribute no afecta a las aplicaciones de escritorio (que normalmente se inician haciendo doble clic en un icono, escribiendo un comando o introduciendo una dirección URL en el explorador). Para obtener más información, vea la clase HostProtectionAttribute o Programación de SQL Server y atributos de protección del host.

La clase EventSchemaTraceListener proporciona la traza de eventos conformes al esquema de un extremo a otro. Puede utilizar la traza de un extremo a otro para un sistema con componentes heterogéneos que cruzan los límites de subprocesos, AppDomain, procesos y equipos. Se ha definido un esquema de eventos normalizado (vea Representación de eventos para consumidores de eventos) para habilitar la traza entre estos límites. Este esquema es compartido por varias tecnologías de traza, incluidas las herramientas de diagnóstico de Windows Vista como el Visor de eventos. El esquema también permite agregar elementos personalizados conformes al esquema.

EventSchemaTraceListener se ajusta para el registro del rendimiento con compatibilidad implícita con la traza sin bloqueo.

La clase EventSchemaTraceListener convierte la información de seguimiento y de depuración en una secuencia de texto en código XML. La descripción del resultado XML se muestra en las tablas incluidas más adelante.

Se puede habilitar o deshabilitar un objeto EventSchemaTraceListener a través del archivo de configuración de la aplicación y, a continuación, se puede utilizar el objeto EventSchemaTraceListener en la aplicación. Asimismo, se puede crear un objeto EventSchemaTraceListener en el código. Se recomienda que habilite los agentes de escucha de trazas a través del archivo de configuración de la aplicación. Para obtener más información sobre los archivos de configuración de la aplicación, vea Configurar aplicaciones. Para obtener información sobre el uso de archivos de configuración para la traza y la depuración, vea Esquema de la configuración de seguimiento y depuración.

Para configurar un objeto EventSchemaTraceListener, modifique el archivo de configuración correspondiente al nombre de la aplicación. En este archivo, se pueden 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 clase EventSchemaTraceListener hereda la propiedad Filter de la clase base TraceListener. La propiedad Filter permite un nivel adicional de filtrado de los resultados de trazas en el agente de escucha. Si hay un filtro, los métodos Trace del agente de escucha de trazas llaman al método ShouldTrace del filtro para determinar si debe emitirse la traza.

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

Bb354295.alert_note(es-es,VS.90).gifNota:

Los métodos de agente de escucha son llamados por los métodos de las clases Debug, Tracey TraceSource. No se llama a estos métodos directamente desde el código de la aplicación. El agente de escucha EventSchemaTraceListener sirve principalmente para que lo utilice la clase TraceSource.

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

Elemento

Atributos

Salida

Notas

CallStack

Ninguno

Depende de la presencia del indicador Callstack en la propiedad TraceOutputOptions.

Los caracteres especiales como > o < se reemplazan con secuencias de escape. Vea la siguiente tabla de traducción de caracteres de escape.

Computer

Ninguno

Siempre presente.

Este elemento representa el valor de la propiedad MachineName.

Correlation

ActivityID

Siempre presente.

Si no se especifica ActivityID, el valor predeterminado es un GUID vacío.

RelatedActivityID

Depende de la presencia del parámetro relatedActivityId en la llamada al método Trace.

El atributo RelatedActivityID corresponde al parámetro relatedActivityId del método TraceTransfer.

Data

Ninguno

Siempre presente.

Este elemento representa la entrada del parámetro data. Se proporciona un elemento para cada objeto de datos. En el caso de los registros de eventos, el elemento Data contiene los datos XML de escape. En el caso de los registros de los datos, el elemento Data contiene datos sin escape. La salida del registro de datos utiliza el método ToString de los objetos de datos que se han pasado.

Event

Ninguno

Siempre presente.

Este elemento contiene un evento de traza.

EventData

Ninguno

Presente para los registros de eventos.

Este elemento representa la entrada del parámetro (message, args). Contiene elementos Data con datos XML de escape que se crean llamando al método TraceEvent.

EventID

Ninguno

Siempre presente.

Este elemento representa la entrada del parámetro id.

Execution

ProcessID

Depende de la presencia del indicador ProcessId en la propiedad TraceOutputOptions.

El atributo ProcessID se especifica en TraceEventCache. En los sistemas operativos Microsoft Windows 98 y Windows Millenium Edition, si el valor de ProcessID es mayor que 2.147.483.647, es una representación positiva de un número negativo y debe convertirse para obtener el identificador de proceso correcto.

ThreadID

Presente cuando ProcessID está presente.

El atributo ThreadID se especifica en TraceEventCache.

Level

Ninguno

Siempre presente.

Este elemento representa la entrada del parámetro (el valor numérico de eventType). Los valores de parámetro mayores que 255 se generan como un nivel 8, que representa TraceEventType.Information. Los tipos de eventos de traza Critical, Error, Warning, Informationy Verbose tienen como resultado los niveles 1, 2, 4, 8 y 10, respectivamente.

LogicalOperationStack

Ninguno

Depende de la presencia del indicador LogicalOperationStack en la propiedad TraceOutputOptions.

Sólo puede existir una operación lógica. Por consiguiente, los valores se escriben como nodos LogicalOperation bajo el elemento LogicalOperationStack.

OpCode

Ninguno

Presente cuando Level es mayor que 255.

Este elemento representa los tipos de evento Trace cuyos valores numéricos son mayores que 255. Start, Stop, Suspend, Resumeo Transfer tienen como resultado los niveles 1, 2, 4, 8 y 10, respectivamente.

Provider

GUID

Siempre presente.

Siempre vacío.

RenderingInfo

Culture

Siempre presente.

Este atributo representa una cadena de recursos para el tipo de evento. Siempre es "en-EN\".

System

Name

Siempre presente.

TimeCreated

SystemTime

Depende de la presencia del indicador DateTime en la propiedad TraceOutputOptions.

La hora es el valor de la propiedad TraceEventCache.DateTime. Esta propiedad se expresa como Hora universal coordinada.

TimeStamp

Ninguno

Depende de la presencia del indicador Timestamp en la propiedad TraceOutputOptions.

Este elemento se especifica en TraceEventCache.

UserData

Ninguno

Presente para los registros de datos.

Este elemento contiene elementos Data con datos sin escape proporcionados por el usuario, provenientes de un método TraceData.

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

Carácter de escape

Valor

&

&amp;

<

&lt;

>

&gt;

"

&quot;

\

&apos;

0xD

&#xD;

0xA

&#xA;

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

#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);
    }
}


Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows Server 2003

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft