Condividi tramite


Procedura dettagliata: filtro dell'output di My.Application.Log

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 compilazione 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 compilare l'applicazione di esempio

  1. Aprire un nuovo progetto Applicazione Windows di Visual Basic.

  2. Aggiungere un pulsante denominato Button1 a Form1.

  3. Nel gestore eventi Click per Button1, aggiungere il seguente codice:

  4. Eseguire l'applicazione nel debugger.

  5. Premere Button1.

    Le seguenti informazioni vengono scritte nell'output di debug dell'applicazione e nel file di log.

    DefaultSource Information: 0 : In Button1_Click

    DefaultSource Error: 2 : Error in the application.

  6. Chiudere l'applicazione.

Per informazioni sulle modalità di visualizzazione della finestra di output del 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 (Visual Basic).

Nota

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 vengono illustrati il libro macchina restituito mostrato nell'esempio precedente: con l'impostazione DefaultSwitch predefinito “information„, solo la seconda chiamata al metodo WriteEntry e la chiamata al metodo WriteException producono l'output del libro macchina.

Per registrare solo gli eventi di tracciatura dell'attività

  1. 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:

    1. Scegliere Aggiungi nuovo elemento dal menu Progetto.

    2. Nella finestra di dialogo Aggiungi nuovo elemento selezionare File di configurazione applicazione.

    3. Fare clic su Aggiungi.

  2. Individuare la sezione <switches>, nella sezione <system.diagnostics>, che si trova nella sezione di livello superiore <configuration>.

  3. 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" />

  4. Cambiare il valore dell'attributo value in "ActivityTracing".

  5. 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>
  6. Eseguire l'applicazione nel debugger.

  7. 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

  8. Chiudere l'applicazione.

  9. 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 System.Diagnostics.Trace e System.Diagnostics.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, 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 tracciatura dell'attività

  1. 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:

    1. Scegliere Aggiungi nuovo elemento dal menu Progetto.

    2. Nella finestra di dialogo Aggiungi nuovo elemento selezionare File di configurazione applicazione.

    3. Fare clic su Aggiungi.

  2. Fare clic su app.config con il pulsante destro del mouse in Esplora soluzioni. Scegliere Apri.

  3. 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>.

  4. Aggiungere questo elemento alla sezione <listeners>:

    <!-- Remove the default debug listener. -->
    <remove name="Default"/>
    <!-- Add a filterable debug listener. -->
    <add name="NewDefault"/>
  5. Individuare la sezione <sharedListeners>, contenuta nella sezione <system.diagnostics>, a sua volta contenuta nella sezione <configuration> di primo livello.

  6. 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.

  7. 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>
  8. Eseguire l'applicazione nel debugger.

  9. 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

  10. 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: individuazione della posizione di inserimento delle informazioni con My.Application.Log (Visual Basic)

Procedura dettagliata: modifica della posizione di inserimento delle informazioni con My.Application.Log (Visual Basic)

Procedura dettagliata: creazione di listener di log personalizzati (Visual Basic)

Procedura: scrivere messaggi di log (Visual Basic)

Concetti

Opzioni di traccia

Registrazione di informazioni relative all'applicazione (Visual Basic)