Procedura dettagliata: filtro dell'output di My.Application.Log
Articolo
In questa procedura dettagliata viene mostrato come cambiare il filtraggio del log predefinito per l'oggetto My.Application.Log, per controllare quali informazioni vengono inviate dall'oggetto Log ai listener e quali vengono scritte dai listener. È possibile modificare il comportamento di registrazione anche dopo aver compilato l'applicazione, poiché le informazioni di configurazione sono archiviate nel file di configurazione dell'applicazione.
Introduzione
Ciascun messaggio scritto da My.Application.Log dispone di un livello di gravità utilizzato dai meccanismi di filtraggio per controllare l'output del log. In questa applicazione di esempio vengono utilizzati i metodi My.Application.Log per scrivere numerosi messaggi di log con diversi livelli di gravità.
Per compilare l'applicazione di esempio
Aprire un nuovo progetto Applicazione Windows di Visual Basic.
Aggiungere un pulsante denominato Button1 a Form1.
Nel gestore eventi Click per Button1, aggiungere il seguente codice:
Per impostazione predefinita, l'output del file di log viene scaricato quando l'applicazione viene chiusa.
Nell'esempio precedente la seconda chiamata al metodo WriteEntry e la chiamata al metodo WriteException creano l'output del log, mentre la prima chiamata e l'ultima chiamata al metodo WriteEntry non producono risultati. Ciò è dovuto al fatto che i livelli di gravità di WriteEntry e WriteException sono "Information" ed "Error", entrambi consentiti dal filtraggio del log predefinito dell'oggetto My.Application.Log. Tuttavia, eventi con livelli di severità "Start" e "Stop" non possono creare output di log.
Filtraggio di tutti i listener My.Application.Log
Nell'oggetto My.Application.Log viene utilizzato SourceSwitch denominato DefaultSwitch per controllare quali messaggi vengono inviati dai metodi WriteEntry e WriteException ai listener di log. È possibile configurare DefaultSwitch nel file di configurazione dell'applicazione impostandone il valore su uno dei valori di enumerazione SourceLevels. Per impostazione predefinita, il valore è "Information".
In questa tabella viene mostrato il livello di gravità richiesto affinché il log scriva un messaggio ai listener, fornendo una particolare impostazione DefaultSwitch.
Valore DefaultSwitch
Gravità del messaggio richiesta per l'output
Critical
Critical
Error
Critical o Error
Warning
Critical, Error o Warning
Information
Critical, Error, Warning o Information
Verbose
Critical, Error, Warning, Information oppure Verbose
ActivityTracing
Start, Stop, Suspend, Resume o Transfer
All
Tutti i messaggi sono consentiti.
Off
Tutti i messaggi sono bloccati.
Nota
I metodi WriteEntry e WriteException dispongono di un overload in cui non viene specificato un livello di gravità.Il livello di gravità implicito per l'overload WriteEntry è "Information" e il livello di gravità implicito per l'overload WriteException è "Error".
In questa tabella viene spiegato l'output di log mostrato nell'esempio precedente: con l'impostazione predefinita DefaultSwitch su "Information" solo la seconda chiamata al metodo WriteEntry e la chiamata al metodo WriteException producono l'output del log.
Per registrare solo gli eventi di tracciatura dell'attività
Fare clic su app.config con il pulsante destro del mouse in Esplora soluzioni, quindi scegliere Apri.
In alternativa
Se non è presente alcun file app.config:
Scegliere Aggiungi nuovo elemento dal menu Progetto.
Nella finestra di dialogo Aggiungi nuovo elemento, selezionare File di configurazione dell'applicazione.
Scegliere Aggiungi.
Individuare la sezione <switches>, nella sezione <system.diagnostics>, che si trova nella sezione di livello superiore <configuration>.
Individuare l'elemento in grado di aggiungere DefaultSwitch alla raccolta di opzioni. L'aspetto di tale elemento è simile al seguente:
<add name="DefaultSwitch" value="Information" />
Cambiare il valore dell'attributo value in "ActivityTracing".
Il contenuto del file app.config dovrebbe essere simile al codice XML di seguito riportato.
Vengono scritte le seguenti informazioni nell'output di debug e nel file di log dell'applicazione:
DefaultSource Start: 4 : Entering Button1_Click
DefaultSource Stop: 5 : Leaving Button1_Click
Chiudere l'applicazione.
Cambiare il valore dell'attributo value in "Information".
Nota
L'impostazione dell'opzione DefaultSwitch garantisce solo il controllo di My.Application.Log.Non modifica il comportamento delle classi Trace e Debug di .NET Framework.
Filtraggio individuale per i listener My.Application.Log
Nel precedente esempio è stato mostrato il modo in cui cambiare il filtraggio per tutti gli output My.Application.Log. In questo esempio viene mostrato come filtrare un singolo listener di log. Per impostazione predefinita, a un'applicazione sono associati due listener che consentono di scrivere l'output di debug dell'applicazione e il file di log.
Il file di configurazione controlla il comportamento dei listener del log consentendo a ciascuno di essi di disporre di un filtro, simile a un'opzione per My.Application.Log. Un listener di log creerà un messaggio solo se la gravità del messaggio è consentita dal DefaultSwitch del log e dal filtro del listener del log.
In questo esempio viene mostrato come configurare il filtro per un nuovo listener di debug e aggiungerlo all'oggetto Log. Il listener di debug predefinito deve essere rimosso dall'oggetto Log in modo da assicurare la provenienza dei messaggi di debug dal nuovo listener di debug.
Per registrare solo gli eventi di tracciatura dell'attività
Fare clic su app.config con il pulsante destro del mouse in Esplora soluzioni, quindi scegliere Apri.
In alternativa
Se non è presente alcun file app.config:
Scegliere Aggiungi nuovo elemento dal menu Progetto.
Nella finestra di dialogo Aggiungi nuovo elemento, selezionare File di configurazione dell'applicazione.
Scegliere Aggiungi.
Fare clic su app.config con il pulsante destro del mouse in Esplora soluzioni. Scegliere Apri.
Individuare la sezione <listeners>, nella sezione <source> con l'attributo name "DefaultSource", che si trova nella sezione <sources>. La sezione <sources> si trova nella sezione <system.diagnostics>, nella sezione di livello superiore <configuration>.
Aggiungere questo elemento alla sezione <listeners>:
<!-- Remove the default debug listener. -->
<remove name="Default"/>
<!-- Add a filterable debug listener. -->
<add name="NewDefault"/>
Individuare la sezione <sharedListeners>, contenuta nella sezione <system.diagnostics>, a sua volta contenuta nella sezione <configuration> di primo livello.
Aggiungere l'elemento alla sezione <sharedListeners>: