Listener di analisi
Aggiornamento: novembre 2007
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 analisi vengono ricevuti dai listener. Il compito di un listener è raccogliere, archiviare e inviare messaggi di errore. I listener indirizzano l'output di analisi 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. Esistono tre tipi di listener predefiniti:
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 analisi e debug al flusso di output o degli errori standard.
Un oggetto DelimitedListTraceListener indirizza l'output di analisi 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 analisi è in un formato di testo delimitato in cui viene utilizzato il delimitatore specificato dalla proprietà Delimiter.
Un oggetto XmlWriterTraceListener indirizza l'output di analisi 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 analisi e Procedura: utilizzare TraceSource e filtri con listener di analisi. Ogni listener nell'insieme Listeners riceve gli stessi messaggi dai metodi di output di analisi. È 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");
// 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 analisi 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 analisi 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));
System.Diagnostics.Trace.get_Listeners().Clear();
System.Diagnostics.Trace.get_Listeners().Add(
new System.Diagnostics.TextWriterTraceListener(Console.get_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
Concetti
Introduzione alla strumentazione e all'analisi