Agentes de escucha de seguimiento
Actualización: noviembre 2007
Cuando se utilizan Trace, Debug y TraceSource, debe existir un mecanismo para recopilar y registrar los mensajes que se envían. Los agentes de escucha son los objetos encargados de recibir los mensajes de seguimiento. Un agente de escucha se encarga de recopilar, almacenar y enviar 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.
Existen agentes de escucha disponibles para las clases Debug, Trace y TraceSource, cada una de los cuales puede enviar sus resultados a una gran variedad de objetos de escucha. Existen tres tipos de agentes de escucha predefinidos:
TextWriterTraceListener redirige el resultado a una instancia de la clase TextWriter o a cualquier elemento que sea una clase Stream. También puede escribir en la consola o en un archivo, ya que éstos dispositivos son clases Stream.
Un agente de escucha EventLogTraceListener redirige el resultado a un registro de eventos.
Un agente DefaultTraceListener envía 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. Los mensajes Fail y Assert también se envían a la API OutputDebugString de Windows y al método Debugger.Log, y también se muestran en un cuadro de mensajes. Este comportamiento es el comportamiento predeterminado para los mensajes de Debug y Trace, ya que DefaultTraceListener se incluye automáticamente en cada colección Listeners (es el único agente de escucha que se incluye automáticamente).
ConsoleTraceListener dirige el resultado del seguimiento o la depuración a la salida estándar o a la secuencia de error estándar.
DelimitedListTraceListener dirige el resultado del seguimiento o 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 presenta un formato de texto delimitado que utiliza el delimitador especificado por la propiedad Delimiter.
XmlWriterTraceListener dirige el resultado del seguimiento o la depuración como datos en código XML a un TextWriter o a una Stream, como una FileStream.
Si desea que cualquier agente de escucha, aparte de DefaultTraceListener, reciba el resultado de Debug, Trace y TraceSource, deberá agregarlo a la colección Listeners. Para obtener 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. Cualquier agente de escucha de la colección Listeners recibe los mismos mensajes de los métodos de seguimiento que generan resultados. Suponga, por ejemplo, que establece dos agentes de escucha: un TextWriterTraceListener y un EventLogTraceListener. Cada agente de escucha recibe el mismo mensaje. El agente de escucha TextWriterTraceListener enviaría sus resultados a una secuencia, mientras que el agente EventLogTraceListener los enviaría a un registro de eventos.
El siguiente ejemplo muestra cómo enviar los 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");
// 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");
Debug y trace comparten la misma colección Listeners; por lo tanto, si agrega un objeto agente de escucha a una colección Debug.Listeners en la aplicación, también se agregará a la colección Trace.Listeners.
El siguiente ejemplo muestra 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));
System.Diagnostics.Trace.get_Listeners().Clear();
System.Diagnostics.Trace.get_Listeners().Add(
new System.Diagnostics.TextWriterTraceListener(Console.get_Out()));
Agentes de escucha definidos por el programador
Puede definir sus propios agentes de escucha si hereda de la clase base TraceListener y reemplaza sus métodos por métodos personalizados. Para obtener más información sobre cómo crear agentes de escucha definidos por el desarrollador, vea TraceListener en la Referencia de .NET Framework.
Vea también
Conceptos
Introducción a la instrumentación y el seguimiento