Rastrear ouvintes

Ao usar Trace, Debug e TraceSource, você deve ter um mecanismo para coletar e gravar as mensagens enviadas. As mensagens de rastreamento são recebidas pelos ouvintes. O objetivo de um ouvinte é coletar, armazenar e rotear mensagens de rastreamento. Os ouvintes direcionam a saída de rastreamento para um destino apropriado, como um log, uma janela ou um arquivo de texto.

Os ouvintes estão disponíveis para Depurar, Rastrear e TraceSource classes, cada um dos quais pode enviar sua saída para uma variedade de objetos de ouvinte. A seguir estão os ouvintes predefinidos comumente usados:

  • Um TextWriterTraceListener redireciona a saída para uma instância da TextWriter classe ou para qualquer coisa que seja uma Stream classe. Ele também pode gravar no console ou em um arquivo, porque essas são Stream classes.

  • Um EventLogTraceListener redireciona a saída para um log de eventos.

  • A DefaultTraceListener emite mensagens Write e WriteLine para o OutputDebugString e para o método Debugger.Log . No Visual Studio, isso faz com que as mensagens de depuração apareçam na janela Saída. As mensagens Fail e failed Assert também emitem para a API do Windows OutputDebugString e para o método Debugger.Log , além de fazer com que uma caixa de mensagem seja exibida. Esse comportamento é o comportamento padrão para mensagens de depuração e rastreamento , porque DefaultTraceListener é incluído automaticamente em cada Listeners coleção e é o único ouvinte incluído automaticamente.

  • A ConsoleTraceListener direciona a saída de rastreamento ou depuração para a saída padrão ou para o fluxo de erro padrão.

  • Um DelimitedListTraceListener direciona a saída de rastreamento ou depuração para um gravador de texto, como um gravador de fluxo, ou para um fluxo, como um fluxo de arquivo. A saída de rastreamento está em um formato de texto delimitado que usa o delimitador especificado pela Delimiter propriedade.

  • Um XmlWriterTraceListener direciona a saída de rastreamento ou depuração como dados codificados em XML para um TextWriter ou para um Stream, como um FileStream.

Se você quiser que qualquer ouvinte além do DefaultTraceListener receba Debug, Trace e TraceSource saída, você deve adicioná-lo à Listeners coleção. Para obter mais informações, consulte Como criar e inicializar ouvintes de rastreamento e Como usar TraceSource e filtros com ouvintes de rastreamento. Qualquer ouvinte na coleção Listeners recebe as mesmas mensagens dos métodos de saída de rastreamento. Por exemplo, suponha que você configure dois ouvintes: um TextWriterTraceListener e um EventLogTraceListener. Cada ouvinte recebe a mesma mensagem. O TextWriterTraceListener direcionaria sua saída para um fluxo e o EventLogTraceListener direcionaria sua saída para um log de eventos.

O exemplo a seguir mostra como enviar a saída para a coleção 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");  

Debug e trace compartilham a mesma coleção Listeners, portanto, se você adicionar um objeto listener a uma coleção Debug.Listeners em seu aplicativo, ele também será adicionado à coleção Trace.Listeners.

O exemplo a seguir mostra como usar um ouvinte para enviar informações de rastreamento para um console:

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

Ouvintes definidos pelo desenvolvedor

Você pode definir seus próprios ouvintes herdando da classe base TraceListener e substituindo seus métodos por seus métodos personalizados. Para obter mais informações sobre como criar ouvintes definidos pelo desenvolvedor, consulte TraceListener a referência do .NET Framework.

Consulte também