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, incluido .NET 6 y versiones posteriores.

Al usar Trace, Debug y TraceSource, debe disponer de un mecanismo para recopilar y grabar los mensajes que se envíen. Los agentes de escucha reciben los mensajes de seguimiento. Un agente de escucha se encarga de recopilar, almacenar y enrutar los 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 sus resultados a una variedad de objetos de escucha. A continuación se indican los agentes de escucha predefinidos más usados:

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

  • Un EventLogTraceListener redirige los resultados a un registro de eventos.

  • Un DefaultTraceListener emite mensajes Write y WriteLine a OutputDebugString y al método Debugger.Log. En Visual Studio, esto hace que los mensajes de depuración aparezcan en la ventana Resultados. También se envían mensajes Fail y Assert a la API de Windows OutputDebugString y al método Debugger.Log, y también hacen que se muestre un cuadro de mensaje. Este comportamiento es el predeterminado de los mensajes Debug y Trace, porque DefaultTraceListener se incluye automáticamente en cada colección de Listeners y es el único agente de escucha que se incluye 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 más información, vea Cómo: Crear e inicializar agentes de escucha de seguimiento y Cómo: Utilizar 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 agente de escucha recibe el mismo mensaje. TextWriterTraceListener dirigiría sus resultados a una secuencia y EventLogTraceListener dirigiría los suyos a un registro de eventos.

En el siguiente ejemplo se muestra cómo enviar resultados 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 seguimiento comparten la misma colección Listeners, por lo que si se agrega un objeto de escucha a una colección de Debug.Listeners en la aplicación, se agrega también a la colección Trace.Listeners.

En el siguiente ejemplo se indica cómo utilizar 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 heredándolos de la clase base TraceListener y reemplazando los métodos de esa clase por métodos personalizados. Para obtener más información sobre cómo crear agentes de escucha definidos por el desarrollador, consulte TraceListener en la documentación de .NET Framework.

Consulte también