Condividi tramite


Procedura dettagliata: Filtro dell'output My.Application.Log (Visual Basic)

Questa procedura dettagliata illustra come modificare il filtro di log predefinito per l'oggetto My.Application.Log per controllare quali informazioni vengono passate dall'oggetto Log ai listener e quali informazioni vengono scritte dai listener. È possibile modificare il comportamento di registrazione anche dopo la compilazione dell'applicazione, perché le informazioni di configurazione vengono archiviate nel file di configurazione dell'applicazione.

Come iniziare

Ogni messaggio che My.Application.Log scrive ha un livello di gravità associato, che i meccanismi di filtraggio usano per controllare l'output del log. Questa applicazione di esempio usa metodi My.Application.Log per scrivere diversi messaggi di log con livelli di gravità diversi.

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. Click Nel gestore eventi per Button1 aggiungere il codice seguente:

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

  5. Premere Button1.

    L'applicazione scrive le informazioni seguenti nell'output di debug e nel file di log dell'applicazione.

    DefaultSource Information: 0 : In Button1_Click

    DefaultSource Error: 2 : Error in the application.

  6. Chiudere l'applicazione.

    Per informazioni su come visualizzare la finestra di output di debug dell'applicazione, vedere Finestra di output. Per informazioni sul percorso del file di log dell'applicazione, vedere Procedura dettagliata: Determinazione della posizione in cui my.application.log scrive informazioni.

    Annotazioni

    Per impostazione predefinita, l'applicazione scarica l'output del file di log alla chiusura dell'applicazione.

    Nell'esempio precedente, la chiamata al metodo WriteEntry e la chiamata al metodo WriteException generano l'output di log, mentre la prima e l'ultima chiamata al metodo WriteEntry non lo fanno. Ciò è dovuto al fatto che i livelli di gravità di WriteEntry e WriteException sono "Information" e "Error", entrambi consentiti dal My.Application.Log filtro di log predefinito dell'oggetto. Tuttavia, gli eventi con livelli di gravità "Start" e "Stop" non riescono a generare output del log.

Filtro per tutti i listener My.Application.Log

L'oggetto My.Application.Log utilizza un SourceSwitch denominato DefaultSwitch per determinare quali messaggi vengono passati dai metodi WriteEntry e WriteException ai listener di log. È possibile configurare DefaultSwitch nel file di configurazione dell'applicazione impostandone il valore su uno dei SourceLevels valori di enumerazione. Per impostazione predefinita, il valore è "Information".

Questa tabella mostra il livello di gravità necessario affinché il Log scriva un messaggio agli ascoltatori, in base a una specifica impostazione DefaultSwitch.

Valore DefaultSwitch Gravità del messaggio necessaria per l'output
Critical Critical
Error Critical o Error
Warning Critical, Error o Warning
Information Critical, Error, Warningo Information
Verbose Critical, Error, Warning, Informationo Verbose
ActivityTracing Start, Stop, Suspend, Resumeo Transfer
All Tutti i messaggi sono consentiti.
Off Tutti i messaggi vengono bloccati.

Annotazioni

I metodi WriteEntry e WriteException dispongono ciascuno di un overload che non specifica 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".

Questa tabella illustra l'output del log mostrato nell'esempio precedente: con l'impostazione predefinita DefaultSwitch "Information", solo la seconda chiamata al metodo WriteEntry e la chiamata al metodo WriteException generano l'output del log.

Per registrare solo gli eventi di tracciamento delle attività

  1. Fare clic con il pulsante destro del mouse app.config in Esplora soluzioni e scegliere Apri.

    oppure

    Se non è presente alcun file app.config:

    1. Scegliere Aggiungi nuovo elemento dal menu Progetto.

    2. Nella finestra di dialogo Aggiungi nuovo elemento scegliere File di configurazione dell'applicazione.

    3. Fare clic su Aggiungi.

  2. Individuare la sezione <switches> all'interno della sezione <system.diagnostics>, che si trova nella sezione principale <configuration>.

  3. Trova l'elemento che aggiunge DefaultSwitch alla raccolta di interruttori. Dovrebbe essere simile a questo elemento:

    <add name="DefaultSwitch" value="Information" />

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

  5. Il contenuto del file app.config dovrebbe essere simile al codice XML seguente:

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

    L'applicazione scrive le informazioni seguenti 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. Modificare di nuovo il valore dell'attributo value in "Information".

    Annotazioni

    L'impostazione del switch DefaultSwitch controlla solo My.Application.Log. Non cambia il comportamento delle classi .NET System.Diagnostics.Trace e System.Diagnostics.Debug.

Filtro individuale per gli ascoltatori di My.Application.Log

Nell'esempio precedente viene illustrato come modificare il filtro per tutti gli My.Application.Log output. In questo esempio viene illustrato come filtrare un singolo listener di log. Per impostazione predefinita, un'applicazione dispone di due listener che scrivono nell'output di debug dell'applicazione e nel file di log.

Il file di configurazione controlla il comportamento dei listener di log consentendo a ognuno di essi di avere un filtro, simile a un commutatore per My.Application.Log. Un listener di log restituirà un messaggio solo se la gravità del messaggio è consentita sia dal DefaultSwitch del log che dal filtro del listener del log.

In questo esempio viene illustrato 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 , quindi è chiaro che i messaggi di debug provengono dal nuovo listener di debug.

Per registrare solo gli eventi di monitoraggio delle attività

  1. Fare clic con il pulsante destro del mouse app.config in Esplora soluzioni e scegliere Apri.

    oppure

    Se non è presente alcun file app.config:

    1. Scegliere Aggiungi nuovo elemento dal menu Progetto.

    2. Nella finestra di dialogo Aggiungi nuovo elemento scegliere File di configurazione dell'applicazione.

    3. Fare clic su Aggiungi.

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

  3. Individua la sezione <listeners> nella sezione <source> con l'attributo name "DefaultSource", che si trova sotto la sezione <sources>. La <sources> sezione si trova sotto la <system.diagnostics> sezione , nella sezione di primo livello <configuration> .

  4. Aggiungere questo elemento alla <listeners> sezione :

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

  6. Aggiungere questo elemento a tale <sharedListeners> sezione:

    <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 EventTypeFilter filtro accetta uno dei SourceLevels valori di enumerazione come initializeData attributo.

  7. Il contenuto del file app.config dovrebbe essere simile al codice XML seguente:

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

    L'applicazione scrive le informazioni seguenti nel file di log dell'applicazione:

    Default Information: 0 : In Button1_Click

    Default Error: 2 : Error in the application.

    L'applicazione scrive meno informazioni nell'output di debug dell'applicazione a causa del filtro più restrittivo.

    Default Error 2 Error

  10. Chiudere l'applicazione.

Per altre informazioni sulla modifica delle impostazioni di log dopo la distribuzione, vedere Uso dei log applicazioni.

Vedere anche