Condividi tramite


Opzioni di analisi

Aggiornamento: novembre 2007

Le opzioni di analisi consentono di attivare, disattivare e filtrare l'output di analisi. Si tratta di oggetti presenti nel codice che possono essere configurati esternamente tramite il file CONFIG. Esistono tre tipi di opzioni di analisi in .NET Framework, ossia le classi BooleanSwitch, TraceSwitch e SourceSwitch. La classe BooleanSwitch funge da opzione di attivazione o disattivazione per diverse istruzioni di analisi. Le classi TraceSwitch e SourceSwitch consentono di attivare un'opzione per un particolare livello di analisi, in modo che vengano visualizzati i messaggi di analisi Trace o TraceSource specificati per tale livello e per tutti i livelli inferiori. Se si disattiva l'opzione, i messaggi di analisi non verranno visualizzati. Tutte queste classi derivano dalla classe Switch (MustInherit) astratta, come avviene per ogni opzione sviluppata dall'utente.

Le opzioni di analisi possono risultare utili per filtrare informazioni. Può essere ad esempio necessario visualizzare ogni messaggio di analisi in un modulo di accesso ai dati, ma solo i messaggi di errore nel resto dell'applicazione. In tal caso, si utilizza un'opzione di analisi per il modulo di accesso ai dati e un'opzione per il resto dell'applicazione. Utilizzando il file CONFIG per configurare le opzioni sulle impostazioni appropriate, è possibile controllare il tipo di messaggi di analisi ricevuti. Per ulteriori informazioni, vedere Procedura: creare e inizializzare opzioni di analisi e Procedura: configurare opzioni di analisi.

In genere un'applicazione distribuita viene eseguita con le opzioni disattivate, in modo che non vengano visualizzati messaggi di analisi superflui o non sia necessario compilare file di log durante l'esecuzione dell'applicazione. Se sorge un problema durante l'esecuzione dell'applicazione, è possibile arrestare l'applicazione, attivare le opzioni e riavviare l'applicazione. I messaggi di analisi verranno in questo modo visualizzati.

Per utilizzare un'opzione è prima necessario creare un oggetto opzione da una classe BooleanSwitch, da una classe TraceSwitch o da una classe di opzione definita dallo sviluppatore. Per ulteriori informazioni sulla creazione di opzioni definite dallo sviluppatore, vedere Classe Switch negli argomenti di riferimento su .NET Framework. Si imposta poi un valore di configurazione che specifica quando occorre utilizzare l'oggetto opzione. Si procede quindi alla verifica dell'impostazione dell'oggetto opzione in diversi metodi di analisi Trace o Debug.

Livelli di analisi

Se si utilizza TraceSwitch è necessario procedere a ulteriori considerazioni. Un oggetto TraceSwitch ha quattro proprietà che restituiscono valori Boolean che indicano se l'opzione è impostata su almeno un livello particolare:

I livelli consentono di limitare il quantitativo di informazioni di analisi che si riceve unicamente alle informazioni necessarie alla risoluzione di un problema. Si specifica il livello di dettaglio desiderato nell'output di analisi impostando e configurando le opzioni di analisi al livello di analisi appropriato. È possibile ricevere messaggi di errore, messaggi di avviso, messaggi informativi, messaggi di analisi dettagliati o nessun messaggio.

È possibile decidere quale tipo di messaggi associare a ciascun livello. In genere il contenuto dei messaggi di analisi dipende da ciò che viene associato a ciascun livello, ma è possibile stabilire le differenze tra i livelli. È possibile ad esempio fornire descrizioni dettagliate di un problema a livello 3 (Info), ma fornire solo un numero di riferimento per l'errore a livello 1 (Error). È possibile stabilire lo schema più adatto per ogni applicazione.

Queste proprietà corrispondono ai valori da 1 a 4 dell'enumerazione TraceLevel. Nella tabella che segue sono elencati i livelli dell'enumerazione TraceLevel e i relativi valori.

Valore enumerato

Valore integer

Tipo di messaggio visualizzato o scritto in una destinazione di output specificata

Off

0

Nessuno

Error

1

Solo messaggi di errore.

Warning

2

Messaggi di avviso e messaggi di errore.

Info

3

Messaggi informativi, messaggi di avviso e messaggi di errore.

Verbose

4

Messaggi dettagliati, messaggi informativi, messaggi di avviso e messaggi di errore.

Le proprietà TraceSwitch indicano il livello di analisi massimo per l'opzione. Vale a dire che l'informazione di analisi viene scritta per il livello specificato e per tutti i livelli inferiori. Se, ad esempio, TraceInfo è true, anche TraceError e TraceWarning saranno true ma TraceVerbose potrebbe essere false.

Queste proprietà sono in sola lettura. L'oggetto TraceSwitch le imposta automaticamente quando viene impostata la proprietà TraceLevel. Di seguito è riportato un esempio:

Dim myTraceSwitch As New TraceSwitch("SwitchOne", "The first switch")
myTraceSwitch.Level = TraceLevel.Info
' This message box displays true, becuase setting the level to
' TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(myTraceSwitch.TraceWarning.ToString())
' This messagebox displays false.
MessageBox.Show(myTraceSwitch.TraceVerbose.ToString())
System.Diagnostics.TraceSwitch myTraceSwitch = 
   new System.Diagnostics.TraceSwitch("SwitchOne", "The first switch");
myTraceSwitch.Level = System.Diagnostics.TraceLevel.Info;
// This message box displays true, becuase setting the level to 
// TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(myTraceSwitch.TraceWarning.ToString());
// This message box displays false.
MessageBox.Show(myTraceSwitch.TraceVerbose.ToString());
System.Diagnostics.TraceSwitch myTraceSwitch =
   new System.Diagnostics.TraceSwitch("SwitchOne", "The first switch");
myTraceSwitch.set_Level(System.Diagnostics.TraceLevel.Info);
// This message box displays true, becuase setting the level to 
// TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(Convert.ToString(myTraceSwitch.get_TraceWarning()));
// This message box displays false.
MessageBox.Show(Convert.ToString(myTraceSwitch.get_TraceVerbose()));}

Opzioni definite dallo sviluppatore

Oltre a fornire BooleanSwitch e TraceSwitch, è possibile definire opzioni personalizzate ereditando dalla classe Switch ed eseguendo l'override dei metodi della classe base con i metodi personalizzati. Per ulteriori informazioni sulla creazione di opzioni definite dallo sviluppatore, vedere Classe Switch negli argomenti di riferimento su .NET Framework.

Vedere anche

Attività

Procedura: aggiungere istruzioni di analisi al codice dell'applicazione

Procedura: configurare opzioni di analisi

Concetti

Listener di analisi

Introduzione alla strumentazione e all'analisi

Altre risorse

Analisi e strumentazione di applicazioni