Listener di traccia
Quando si utilizzano Trace, Debug e TraceSource, è necessario disporre di un meccanismo per la raccolta e la registrazione dei messaggi che vengono inviati. I messaggi di traccia vengono ricevuti dai listener. Il compito di un listener è raccogliere, archiviare e inviare messaggi di errore. I listener indirizzano l'output di tracciatura a una destinazione appropriata, ad esempio un file di log, una finestra o un file di testo.
I listener sono disponibili per le classi Debug, Trace e TraceSource, ciascuna delle quali può inviare il proprio output a diversi oggetti listener. Di seguito sono riportati i listener predefiniti utilizzati comunemente:
Un oggetto TextWriterTraceListener reindirizza l'output a un'istanza della classe TextWriter o a qualsiasi classe Stream. È anche in grado di scrivere nella console o in un file, poiché si tratta sempre di classi Stream.
Un oggetto EventLogTraceListener reindirizza l'output a un log eventi.
Un oggetto DefaultTraceListener crea messaggi Write e WriteLine per i metodi OutputDebugString e Debugger.Log. In Visual Studio questo provoca la visualizzazione dei messaggi di debug nella finestra di output. I messaggi Fail e Assert di errore vengono anche inviati nell'API Windows OutputDebugString e nel metodo Debugger.Log e determinano la visualizzazione di una finestra di messaggio. Questo è il comportamento predefinito per i messaggi di Debug e Trace, poiché DefaultTraceListener viene automaticamente incluso in ogni insieme Listeners ed è l'unico listener incluso automaticamente.
Un oggetto ConsoleTraceListener indirizza l'output di tracciatura e debug al flusso di output o degli errori standard.
Un oggetto DelimitedListTraceListener indirizza l'output di traccia o debug a un writer di testo, ad esempio un writer di flusso, oppure a un flusso, ad esempio un flusso di file. L'output di traccia è in un formato di testo delimitato in cui viene utilizzato il delimitatore specificato dalla proprietà Delimiter.
Un oggetto XmlWriterTraceListener indirizza l'output di tracciatura e debug come dati codificati in XML a un TextWriter o a un Stream, ad esempio FileStream.
Se si desidera che, oltre a DefaultTraceListener, altri listener ricevano l'output di Debug, Trace e TraceSource, è necessario aggiungerli all'insieme Listeners. Per ulteriori informazioni, vedere Procedura: creare e inizializzare listener di traccia e Procedura: utilizzare TraceSource e filtri con listener di traccia. Ogni listener nell'insieme Listeners riceve gli stessi messaggi dai metodi di output di traccia. È ad esempio possibile impostare due listener: TextWriterTraceListener e EventLogTraceListener, ognuno dei quali riceverà lo stesso messaggio. TextWriterTraceListener indirizzerà il proprio output in un flusso, mentre EventLogTraceListener indirizzerà il proprio output in un log eventi.
Nell'esempio seguente viene illustrata la modalità di invio dell'output all'insieme 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 traccia condividono lo stesso insieme Listeners. Di conseguenza, se si aggiunge un oggetto listener a un insieme Debug.Listeners nell'applicazione, esso verrà aggiunto anche all'insieme Trace.Listeners.
Nell'esempio seguente viene illustrato come utilizzare un listener per inviare informazioni di tracciatura 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));
Listener definiti dallo sviluppatore
È possibile definire i listener ereditando dalla classe base TraceListener ed eseguendo l'override dei metodi con i metodi personalizzati. Per ulteriori informazioni sulla creazione di listener definiti dallo sviluppatore, vedere TraceListener nei riferimenti a .NET Framework.
Vedere anche
Riferimenti
Concetti
Introduzione alla strumentazione e alla traccia