Compartir a través de


Agentes de escucha de seguimiento

Nota:

Este artículo es específico de .NET Framework. No se aplica a implementaciones más recientes de .NET, incluidas .NET 6 y versiones posteriores.

Al usar Trace, Debug y TraceSource, debe tener un mecanismo para recopilar y registrar los mensajes que se envían. Los agentes de escucha reciben los mensajes de seguimiento. El propósito de un agente de escucha es recopilar, almacenar y enrutar mensajes de seguimiento. Los agentes de escucha dirigen los resultados del seguimiento a un destino apropiado, como un registro, una ventana o un archivo de texto.

Los agentes de escucha están disponibles para las clases Debug, Trace y TraceSource , cada una de las cuales puede enviar su salida a una variedad de objetos de agente de escucha. A continuación se muestran los agentes de escucha predefinidos usados habitualmente:

  • Un TextWriterTraceListener redirige la salida a una instancia de la TextWriter clase o a cualquier elemento que sea una Stream clase. También puede escribir en la consola o en un archivo, ya que ambos son clases Stream.

  • Un EventLogTraceListener redirecciona la salida a un registro de eventos.

  • Un DefaultTraceListener emite mensajes Write y WriteLine al OutputDebugString y al método Debugger.Log. En Visual Studio, esto hace que los mensajes de depuración aparezcan en la ventana de Salida. Fail y los mensajes Assert fallidos se emiten a la API de Windows OutputDebugString y al método Debugger.Log, lo que también provoca que se muestre un cuadro de mensaje. Este comportamiento es el comportamiento predeterminado para los mensajes de Depuración y Seguimiento, ya que DefaultTraceListener se incluye automáticamente en todas las colecciones y es el único receptor incluido automáticamente.

  • Un ConsoleTraceListener dirige los resultados del seguimiento o de la depuración a los resultados estándar o al flujo de error estándar.

  • Un DelimitedListTraceListener dirige los resultados del seguimiento o de la depuración a un escritor de texto, como un escritor de secuencias, o a una secuencia, como una secuencia de archivo. El resultado del seguimiento está en un formato de texto delimitado que utiliza el delimitador especificado por la propiedad Delimiter.

  • Un XmlWriterTraceListener dirige los resultados del seguimiento o de la depuración como datos codificados en XML a un TextWriter o a un Stream, como un FileStream.

Si quiere que algún agente de escucha además del DefaultTraceListener reciba los resultados de Debug, Trace y TraceSource, debe agregarlo a la colección de Listeners. Para obtener más información, vea How to: Create and Initialize Trace Listeners (Cómo: Crear e inicializar agentes de escucha de seguimiento ) y How to: Use TraceSource and Filters with Trace Listeners (Cómo: Usar TraceSource y filtros con agentes de escucha de seguimiento). Todos los agentes de escucha de la colección Listeners reciben los mismos mensajes de los métodos de resultados de seguimiento. Por ejemplo, supongamos que configura dos agentes de escucha: TextWriterTraceListener y EventLogTraceListener. Cada oyente recibe el mismo mensaje. TextWriterTraceListener dirigiría su salida a una secuencia y EventLogTraceListener dirigiría su salida a un registro de eventos.

En el ejemplo siguiente se muestra cómo enviar la salida a la colección Listeners .

' Use this example when debugging.
Debug.WriteLine("Error in Widget 42")
' Use this example when tracing.
Trace.WriteLine("Error in Widget 42")
// Use this example when debugging.
System.Diagnostics.Debug.WriteLine("Error in Widget 42");
// Use this example when tracing.
System.Diagnostics.Trace.WriteLine("Error in Widget 42");

La depuración y el rastreo comparten la misma colección Listeners, por lo que si agrega un objeto de escucha a una colección Debug.Listeners en su aplicación, también se agrega a la colección Trace.Listeners.

En el ejemplo siguiente se muestra cómo usar un agente de escucha para enviar información de seguimiento a una consola:

Trace.Listeners.Clear()
Trace.Listeners.Add(New TextWriterTraceListener(Console.Out))
System.Diagnostics.Trace.Listeners.Clear();
System.Diagnostics.Trace.Listeners.Add(
   new System.Diagnostics.TextWriterTraceListener(Console.Out));

Agentes de escucha definidos por el desarrollador

Puede definir sus propios agentes de escucha heredando de la clase base TraceListener y reemplazando sus métodos con los métodos personalizados. Para obtener más información sobre cómo crear agentes de escucha definidos por el desarrollador, consulte TraceListener en la referencia de .NET Framework.

Consulte también