Procedura dettagliata: filtraggio dell'output di My.Application.Log
Aggiornamento: novembre 2007
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 della registrazione anche dopo la creazione dell'applicazione in quanto le informazioni sulla configurazione vengono memorizzate 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 generare l'applicazione di esempio
Aprire un nuovo progetto Applicazione Windows Visual Basic.
Aggiungere un pulsante denominato Button1 in Form1.
Nel gestore eventi Click per Button1, aggiungere il seguente codice:
' Activity tracing information My.Application.Log.WriteEntry("Entering Button1_Click", TraceEventType.Start) ' Tracing information My.Application.Log.WriteEntry("In Button1_Click", TraceEventType.Information) ' Create an exception to log. Dim ex As New ApplicationException ' Exception information My.Application.Log.WriteException(ex) ' Activity tracing information My.Application.Log.WriteEntry("Leaving Button1_Click", TraceEventType.Stop)
Eseguire l'applicazione nel debugger.
Premere Button1.
Vengono scritte le seguenti informazioni nell'output di debug e nel file di log dell'applicazione.
DefaultSource Information: 0 : In Button1_Click
DefaultSource Error: 2 : Error in the application.
Chiudere l'applicazione.
Per informazioni su come visualizzare la finestra di output di debug dell'applicazione, vedere Finestra di output. Per informazioni sulla posizione del file di log dell'applicazione, vedere Procedura dettagliata: individuazione della posizione di inserimento delle informazioni con My.Application.Log.
Nota: |
---|
Per impostazione predefinita, l'output del file di log viene scaricato quando l'applicazione viene chiusa. |
Nell'esempio sopra riportato, la seconda chiamata a Metodo WriteEntry (My.Application.Log e My.Log) e la chiamata a Metodo WriteException (My.Application.Log e My.Log) creano l'output del log mentre la prima e l'ultima chiamata al metodo WriteEntry non creano 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 |
---|---|
Tutti i messaggi sono consentiti. |
|
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 analisi dell'attività
Fare clic su app.config con il pulsante destro del mouse in Esplora soluzioni, quindi scegliere Apri.
-oppure-
Se non è presente un file app.config:
Scegliere Aggiungi nuovo elemento dal menu Progetto.
Nella finestra di dialogo Aggiungi nuovo elemento selezionare File di configurazione applicazione.
Fare clic su 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 all'insieme 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 deve essere simile al seguente XML:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <sources> <!-- This section configures My.Application.Log --> <source name="DefaultSource" switchName="DefaultSwitch"> <listeners> <add name="FileLog"/> </listeners> </source> </sources> <switches> <add name="DefaultSwitch" value="ActivityTracing" /> </switches> <sharedListeners> <add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/> </sharedListeners> </system.diagnostics> </configuration>
Eseguire l'applicazione nel debugger.
Premere Button1.
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 viene modificato il comportamento delle classi .NET FrameworkSystem.Diagnostics.Trace eSystem.Diagnostics.Debug. |
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, un'applicazione dispone di due listener in grado di scrivere nell'output di debug e nel file di log dell'applicazione.
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 analisi dell'attività
Fare clic su app.config con il pulsante destro del mouse in Esplora soluzioni, quindi scegliere Apri.
-oppure-
Se non è presente un file app.config:
Scegliere Aggiungi nuovo elemento dal menu Progetto.
Nella finestra di dialogo Aggiungi nuovo elemento selezionare File di configurazione applicazione.
Fare clic su 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>, nella sezione <system.diagnostics>, che si trova nella sezione di livello superiore <configuration>.
Aggiungere questo elemento alla sezione <sharedListeners>:
<add name="NewDefault" type="System.Diagnostics.DefaultTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error" /> </add>
Il filtro EventTypeFilter assume uno dei valori di enumerazione SourceLevels come proprio attributo initializeData.
Il contenuto del file app.config deve essere simile al seguente XML:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <sources> <!-- This section configures My.Application.Log --> <source name="DefaultSource" switchName="DefaultSwitch"> <listeners> <add name="FileLog"/> <!-- Remove the default debug listener. --> <remove name="Default"/> <!-- Add a filterable debug listener. --> <add name="NewDefault"/> </listeners> </source> </sources> <switches> <add name="DefaultSwitch" value="Information" /> </switches> <sharedListeners> <add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/> <add name="NewDefault" type="System.Diagnostics.DefaultTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error" /> </add> </sharedListeners> </system.diagnostics> </configuration>
Eseguire l'applicazione nel debugger.
Premere Button1.
Vengono scritte le seguenti informazioni nel file di log dell'applicazione:
Default Information: 0 : In Button1_Click
Default Error: 2 : Error in the application.
Nell'output di debug dell'applicazione viene scritta una quantità minore di informazioni in quanto il filtro è più restrittivo.
Default Error 2 Error
Chiudere l'applicazione.
Per ulteriori informazioni sulla modifica delle impostazioni del log dopo la distribuzione, vedere Utilizzo dei log applicazione in Visual Basic.
Vedere anche
Attività
Procedura dettagliata: creazione di listener di log personalizzati
Procedura: scrivere messaggi di log