EventSchemaTraceListener Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 |
| 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. |