Listener di tracciaTrace Listeners

Quando si usa Trace, Debug e TraceSource, è necessario disporre di un meccanismo per la raccolta e la registrazione dei messaggi inviati.When using Trace, Debug and TraceSource, you must have a mechanism for collecting and recording the messages that are sent. I messaggi di traccia vengono ricevuti dai listener.Trace messages are received by listeners. Il compito di un listener è raccogliere, archiviare e inviare messaggi di errore.The purpose of a listener is to collect, store, and route tracing messages. I listener indirizzano l'output di tracciatura a una destinazione appropriata, ad esempio un file di log, una finestra o un file di testo.Listeners direct the tracing output to an appropriate target, such as a log, window, or text file.

I listener sono disponibili per le classi Debug, Trace e TraceSource, ognuna delle quali può inviare il proprio output a un'ampia gamma di oggetti listener.Listeners are available to the Debug, Trace, and TraceSource classes, each of which can send its output to a variety of listener objects. Di seguito sono riportati i listener predefiniti comunemente usati:The following are the commonly used predefined listeners:

  • TextWriterTraceListener reindirizza l'output a un'istanza della classe TextWriter o a qualsiasi oggetto che sia una classe Stream.A TextWriterTraceListener redirects output to an instance of the TextWriter class or to anything that is a Stream class. Può anche scrivere nella console o in un file, perché si tratta di classi Stream.It can also write to the console or to a file, because these are Stream classes.

  • EventLogTraceListener reindirizza l'output a un log eventi.An EventLogTraceListener redirects output to an event log.

  • DefaultTraceListener genera messaggi Write e WriteLine in OutputDebugString e nel metodo Debugger.Log.A DefaultTraceListener emits Write and WriteLine messages to the OutputDebugString and to the Debugger.Log method. In Visual Studio questo comportamento fa sì che i messaggi di debug vengano visualizzati nella finestra di output.In Visual Studio, this causes the debugging messages to appear in the Output window. I messaggi Assert non riusciti e Fail vengono generati anche nell'API Windows OutputDebugString e nel metodo Debugger.Log e provocano anche la visualizzazione di una finestra di messaggio.Fail and failed Assert messages also emit to the OutputDebugString Windows API and the Debugger.Log method, and also cause a message box to be displayed. Questo comportamento è quello predefinito per i messaggi di Debug e Trace, perché DefaultTraceListener viene automaticamente incluso in ogni raccolta Listeners ed è l'unico listener incluso automaticamente.This behavior is the default behavior for Debug and Trace messages, because DefaultTraceListener is automatically included in every Listeners collection and is the only listener automatically included.

  • ConsoleTraceListener reindirizza l'output di traccia o di debug all'output standard o al flusso di errori standard.A ConsoleTraceListener directs tracing or debugging output to either the standard output or the standard error stream.

  • Tramite l'oggetto DelimitedListTraceListener l'output di traccia o di debug viene indirizzato a un writer di testo, ad esempio un writer di flusso oppure a un flusso, ad esempio un flusso di file.A DelimitedListTraceListener directs tracing or debugging output to a text writer, such as a stream writer, or to a stream, such as a file stream. L'output di traccia è in un formato testo delimitato che usa il delimitatore specificato dalla proprietà Delimiter.The trace output is in a delimited text format that uses the delimiter specified by the Delimiter property.

  • XmlWriterTraceListener reindirizza l'output di traccia o di debug come dati con codifica XML a un oggetto TextWriter o Stream, come FileStream.An XmlWriterTraceListener directs tracing or debugging output as XML-encoded data to a TextWriter or to a Stream, such as a FileStream.

Se si vuole che altri listener oltre a DefaultTraceListener ricevano l'output di Debug, Trace e TraceSource, è necessario aggiungerli alla raccolta Listeners.If you want any listener besides the DefaultTraceListener to receive Debug, Trace and TraceSource output, you must add it to the Listeners collection. Per altre informazioni, vedere Procedura: Creare e inizializzare listener di traccia e Procedura: Usare TraceSource e filtri con listener di traccia.For more information, see How to: Create and Initialize Trace Listeners and How to: Use TraceSource and Filters with Trace Listeners. Tutti i listener inclusi nella raccolta Listeners ricevono gli stessi messaggi dai metodi di output di traccia.Any listener in the Listeners collection gets the same messages from the trace output methods. Si supponga, ad esempio, di configurare due listener, TextWriterTraceListener ed EventLogTraceListener.For example, suppose you set up two listeners: a TextWriterTraceListener and an EventLogTraceListener. Ogni listener riceve lo stesso messaggio.Each listener receives the same message. TextWriterTraceListener reindirizzerà l'output a un flusso, mentre EventLogTraceListener reindirizzerà l'output a un log eventi.The TextWriterTraceListener would direct its output to a stream, and the EventLogTraceListener would direct its output to an event log.

L'esempio seguente mostra come inviare l'output alla raccolta Listeners.The following example shows how to send output to the Listeners collection.

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

Poiché Debug e Trace condividono la stessa raccolta Listeners, se si aggiunge un oggetto listener a una raccolta Debug.Listeners nell'applicazione, l'oggetto viene aggiunto anche alla raccolta Trace.Listeners.Debug and trace share the same Listeners collection, so if you add a listener object to a Debug.Listeners collection in your application, it gets added to the Trace.Listeners collection as well.

L'esempio seguente mostra come usare un listener per inviare informazioni di traccia a una console:The following example shows how to use a listener to send tracing information to a 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 sviluppatoreDeveloper-Defined Listeners

È possibile definire listener personalizzati ereditando dalla classe di base TraceListener ed eseguendo l'override dei metodi della classe con metodi personalizzati.You can define your own listeners by inheriting from the TraceListener base class and overriding its methods with your customized methods. Per altre informazioni sulla creazione di listener definiti dallo sviluppatore, vedere TraceListener negli argomenti di riferimento su .NET Framework.For more information on creating developer-defined listeners, see TraceListener in the .NET Framework reference.

Vedere ancheSee Also

TextWriterTraceListener
EventLogTraceListener
DefaultTraceListener
TraceListener
Traccia e strumentazione di applicazioniTracing and Instrumenting Applications
Opzioni di tracciaTrace Switches