Condividi tramite


Listener di tracce

Annotazioni

Questo articolo è specifico di .NET Framework. Non si applica alle implementazioni più recenti di .NET, incluse .NET 6 e versioni successive.

Quando si usa Trace, Debug e TraceSource, è necessario disporre di un meccanismo per raccogliere e registrare i messaggi inviati. I messaggi di traccia vengono ricevuti dai listener. Lo scopo di un listener è raccogliere, archiviare e instradare i messaggi di traccia. I listener indirizzano l'output di traccia a una destinazione appropriata, ad esempio un log, una finestra o un file di testo.

I listener sono disponibili per le classi Debug, Trace e TraceSource , ognuna delle quali può inviare l'output a un'ampia gamma di oggetti listener. Di seguito sono riportati i listener predefiniti di uso comune:

  • Un TextWriterTraceListener reindirizza l'output a un'istanza della TextWriter classe o a qualsiasi elemento che sia una Stream classe . Può anche scrivere nella console o in un file, perché si tratta di Stream classi.

  • Un EventLogTraceListener reindirizza l'output a un registro eventi.

  • Un DefaultTraceListener genera messaggi Write e WriteLine al metodo OutputDebugString e al metodo Debugger.Log . In Visual Studio i messaggi di debug vengono visualizzati nella finestra Output. I messaggi di errore Fail e i messaggi di Assert generano anche l'API Windows OutputDebugString e il metodo Debugger.Log e determinano la visualizzazione di una finestra di messaggio. Questo comportamento è il comportamento predefinito per i messaggi di Debug e di Trace, perché DefaultTraceListener viene incluso automaticamente in ogni Listeners raccolta ed è l'unico listener incluso automaticamente.

  • Un ConsoleTraceListener indirizza l'output di traccia o di debug all'output standard o al flusso di errore standard.

  • Un DelimitedListTraceListener indirizza l'output di traccia o debug a uno scrittore di testo, come ad esempio uno scrittore di flusso, o a un flusso, come ad esempio un file di flusso. L'output di traccia è in un formato di testo delimitato che usa il delimitatore specificato dalla proprietà Delimiter.

  • Un XmlWriterTraceListener indirizza l'output di traccia o debug come dati con codifica XML a un TextWriter o a un Stream, ad esempio un FileStream.

Se si vuole che qualsiasi listener oltre DefaultTraceListener riceva Debug, Trace e TraceSource output, è necessario aggiungerlo alla raccolta Listeners. Per ulteriori informazioni, consultare Guida: Creare e inizializzare i listener di traccia e Guida: Utilizzare TraceSource e i filtri con i listener di traccia. Qualsiasi listener nella raccolta Listener riceve gli stessi messaggi dai metodi di tracciamento. Si supponga, ad esempio, di configurare due listener: TextWriterTraceListener e EventLogTraceListener. Ogni listener riceve lo stesso messaggio. TextWriterTraceListener indirizza l'output a un flusso e EventLogTraceListener indirizza l'output a un registro eventi.

Nell'esempio seguente viene illustrato come inviare l'output all'insieme Listener .

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

Il debug e la traccia condividono la stessa raccolta Listener , quindi se si aggiunge un oggetto listener a un insieme Debug.Listener nell'applicazione, viene aggiunto anche all'insieme Trace.Listen .

L'esempio seguente illustra come usare un listener per inviare informazioni di traccia a una 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));

ascoltatori di Developer-Defined

È possibile definire listener personalizzati ereditando dalla classe di base TraceListener ed eseguendo l'override dei relativi metodi con i metodi personalizzati. Per altre informazioni sulla creazione di listener definiti dallo sviluppatore, vedere TraceListener nella guida di riferimento del .NET Framework.

Vedere anche