Procedura dettagliata: Filtro dell'output di My.Application.Log (Visual Basic)Walkthrough: Filtering My.Application.Log Output (Visual Basic)

Questa procedura dettagliata illustra come modificare il filtro di log predefinito per l'oggetto My.Application.Log per stabilire quali informazioni vengono passate dall'oggetto Log ai listener e quali informazioni vengono scritte dai listener.This walkthrough demonstrates how to change the default log filtering for the My.Application.Log object, to control what information is passed from the Log object to the listeners and what information is written by the listeners. È possibile modificare il comportamento di registrazione anche dopo la compilazione dell'applicazione, poiché le informazioni di configurazione vengono archiviate nel file di configurazione dell'applicazione.You can change the logging behavior even after building the application, because the configuration information is stored in the application's configuration file.

IntroduzioneGetting Started

A ogni messaggio scritto da My.Application.Log è associato un livello di gravità, che i meccanismi di filtro usano per controllare l'output del log.Each message that My.Application.Log writes has an associated severity level, which filtering mechanisms use to control the log output. Questa applicazione di esempio usa i metodi My.Application.Log per scrivere alcuni messaggi di log con diversi livelli di gravità.This sample application uses My.Application.Log methods to write several log messages with different severity levels.

Per compilare l'applicazione di esempioTo build the sample application

  1. Aprire un nuovo progetto Applicazione Windows in Visual Basic.Open a new Visual Basic Windows Application project.

  2. Aggiungere un pulsante denominato Button1 a Form1.Add a button named Button1 to Form1.

  3. Aggiungere il codice seguente al gestore eventi Click per Button1:In the Click event handler for Button1, add the following code:

    ' 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.Run the application in the debugger.

  5. Premere Button1.Press Button1.

    L'applicazione scrive le informazioni seguenti nel file di log e di output di debug dell'applicazione.The application writes the following information to the application's debug output and log file.

    DefaultSource Information: 0 : In Button1_Click

    DefaultSource Error: 2 : Error in the application.

  6. Chiudere l'applicazione.Close the application.

    Per informazioni su come visualizzare la finestra di output di debug dell'applicazione, vedere Finestra di output.For information on how to view the application's debug output window, see Output Window. Per informazioni sulla posizione del file di log dell'applicazione, vedere Procedura dettagliata: Individuazione della posizione di inserimento delle informazioni con My.Application.Log.For information on the location of the application's log file, see Walkthrough: Determining Where My.Application.Log Writes Information.

    Nota

    Per impostazione predefinita, l'applicazione elimina l'output del file di log alla chiusura dell'applicazione.By default, the application flushes the log-file output when the application closes.

    Nell'esempio precedente la seconda chiamata al metodo WriteEntry e la chiamata al metodo WriteException generano l'output del log, mentre non lo generano la prima e l'ultima chiamata al metodo WriteEntry.In the example above, the second call to the WriteEntry method and the call to the WriteException method produces log output, while the first and last calls to the WriteEntry method do not. Questo avviene poiché i livelli di gravità di WriteEntry e WriteException sono "Information" ed "Error", entrambi consentiti dal filtro di log predefinito dell'oggetto My.Application.Log.This is because the severity levels of WriteEntry and WriteException are "Information" and "Error", both of which are allowed by the My.Application.Log object's default log filtering. Tuttavia, agli eventi con i livelli di gravità "Start" e "Stop" non è consentito creare output di log.However, events with "Start" and "Stop" severity levels are prevented from producing log output.

Filtro per tutti i listener di My.Application.LogFiltering for All My.Application.Log Listeners

L'oggetto My.Application.Log usa una classe SourceSwitch denominata DefaultSwitch per stabilire quali messaggi vengono passati dai metodi WriteEntry e WriteException ai listener di log.The My.Application.Log object uses a SourceSwitch named DefaultSwitch to control which messages it passes from the WriteEntry and WriteException methods to the log listeners. È possibile configurare DefaultSwitch nel file di configurazione dell'applicazione impostando il relativo valore su uno dei valori di enumerazione di SourceLevels.You can configure DefaultSwitch in the application's configuration file by setting its value to one of the SourceLevels enumeration values. Per impostazione predefinita, il valore è "Information".By default, its value is "Information".

Questa tabella illustra il livello di gravità richiesto al log per la scrittura di un messaggio ai listener, data un'impostazione DefaultSwitch specifica.This table shows the severity level required for Log to write a message to the listeners, given a particular DefaultSwitch setting.

Valore DefaultSwitchDefaultSwitch Value Gravità del messaggio richiesto per l'outputMessage severity required for output
Critical Critical
Error Critical o ErrorCritical or Error
Warning Critical, Erroro WarningCritical, Error, or Warning
Information Critical, Error, Warning o InformationCritical, Error, Warning, or Information
Verbose Critical, Error, Warning, Information o VerboseCritical, Error, Warning, Information, or Verbose
ActivityTracing Start, Stop, Suspend, Resume o TransferStart, Stop, Suspend, Resume, or Transfer
All Sono consentiti tutti i messaggi.All messages are allowed.
Off Tutti i messaggi vengono bloccati.All messages are blocked.

Nota

I metodi WriteEntry e WriteException hanno entrambi un overload che non specifica un livello di gravità.The WriteEntry and WriteException methods each have an overload that does not specify a severity level. Il livello di gravità implicito per l'overload di WriteEntry è "Information" e il livello di gravità implicito per l'overload WriteException è "Error".The implicit severity level for the WriteEntry overload is "Information", and the implicit severity level for the WriteException overload is "Error".

In questa tabella viene illustrato l'output di log dell'esempio precedente: con l'impostazione predefinita "Information" per DefaultSwitch solo la seconda chiamata al metodo WriteEntry e la chiamata al WriteException producono output di log.This table explains the log output shown in the previous example: with the default DefaultSwitch setting of "Information", only the second call to the WriteEntry method and the call to the WriteException method produce log output.

Per registrare solo gli eventi di traccia attivitàTo log only activity tracing events

  1. Fare clic con il pulsante destro del mouse su app.config Esplora soluzioni e selezionare Apri.Right-click app.config in the Solution Explorer and select Open.

    -oppure--or-

    Se non è presente alcun file app.config:If there is no app.config file:

    1. Scegliere Aggiungi nuovo elemento dal menu Progetto.On the Project menu, choose Add New Item.

    2. Nella finestra di dialogo Aggiungi nuovo elemento scegliere File di configurazione dell'applicazione.From the Add New Item dialog box, choose Application Configuration File.

    3. Fare clic su Aggiungi.Click Add.

  2. Individuare la sezione <switches> nella sezione <system.diagnostics> all'interno della sezione di primo livello <configuration> .Locate the <switches> section, which is in the <system.diagnostics> section, which is in the top-level <configuration> section.

  3. Trovare l'elemento che consente di aggiungere DefaultSwitch alla raccolta di opzioni.Find the element that adds DefaultSwitch to the collection of switches. Deve essere simile all'elemento seguente:It should look similar to this element:

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

  4. Modificare il valore dell'attributo value impostandolo su "ActivityTracing".Change the value of the value attribute to "ActivityTracing".

  5. Il contenuto del file app.config dovrebbe essere simile al codice XML seguente.The content of the app.config file should be similar to the following 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.Run the application in the debugger.

  7. Premere Button1.Press Button1.

    L'applicazione scrive le informazioni seguenti nel file di log e di output di debug dell'applicazione:The application writes the following information to the application's debug output and log file:

    DefaultSource Start: 4 : Entering Button1_Click

    DefaultSource Stop: 5 : Leaving Button1_Click

  8. Chiudere l'applicazione.Close the application.

  9. Impostare di nuovo il valore dell'attributo value su "Information".Change the value of the value attribute back to "Information".

    Nota

    L'impostazione dell'opzione DefaultSwitch controlla solo My.Application.Log.The DefaultSwitch switch setting controls only My.Application.Log. Non modifica il comportamento delle classi System.Diagnostics.Trace e System.Diagnostics.Debug di .NET Framework.It does not change how the .NET Framework System.Diagnostics.Trace and System.Diagnostics.Debug classes behave.

Filtro individuale per i listener di My.Application.LogIndividual Filtering For My.Application.Log Listeners

Nell'esempio precedente viene illustrato come modificare il filtro per tutto l'output di My.Application.Log.The previous example shows how to change the filtering for all My.Application.Log output. Questo esempio illustra come filtrare un singolo listener di log.This example demonstrates how to filter an individual log listener. Per impostazione predefinita, un'applicazione ha due listener che scrivono nell'output di debug dell'applicazione e nel file di log.By default, an application has two listeners that write to the application's debug output and the log file.

Il file di configurazione controlla il comportamento dei listener di log, consentendo a ognuno di essi di avere un filtro, che è simile a un'opzione per My.Application.Log.The configuration file controls the behavior of the log listeners by allowing each one to have a filter, which is similar to a switch for My.Application.Log. Un listener di log genera un messaggio solo se la gravità del messaggio è consentita sia dall'opzione DefaultSwitch del log, sia dal filtro del listener di log.A log listener will output a message only if the message's severity is allowed by both the log's DefaultSwitch and the log listener's filter.

In questo esempio viene illustrato come configurare il filtro per un nuovo listener di debug e aggiungerlo all'oggetto Log.This example demonstrates how to configure filtering for a new debug listener and add it to the Log object. Il listener di debug predefinito deve essere rimosso dall'oggetto Log in modo che sia chiaro che i messaggi di debug provengono dal nuovo listener di debug.The default debug listener should be removed from the Log object, so it is clear that the debug messages come from the new debug listener.

Per registrare solo gli eventi di traccia attivitàTo log only activity-tracing events

  1. Fare clic con il pulsante destro del mouse su app.config in Esplora soluzioni e scegliere Apri.Right-click app.config in the Solution Explorer and choose Open.

    -oppure--or-

    Se non è presente alcun file app.config:If there is no app.config file:

    1. Scegliere Aggiungi nuovo elemento dal menu Progetto.On the Project menu, choose Add New Item.

    2. Nella finestra di dialogo Aggiungi nuovo elemento scegliere File di configurazione dell'applicazione.From the Add New Item dialog box, choose Application Configuration File.

    3. Fare clic su Aggiungi.Click Add.

  2. Fare clic con il pulsante destro del mouse su app.config in Esplora soluzioni.Right-click app.config in Solution Explorer. Scegliere Apri.Choose Open.

  3. Individuare la sezione <listeners> all'interno della sezione <source> con l'attributo name "DefaultSource" che si trova nella sezione <sources> .Locate the <listeners> section, in the <source> section with the name attribute "DefaultSource", which is under the <sources> section. La sezione <sources> si trova nella sezione <system.diagnostics> all'interno della sezione di primo livello <configuration> .The <sources> section is under the <system.diagnostics> section, in the top-level <configuration> section.

  4. Aggiungere l'elemento seguente alla sezione <listeners>:Add this element to the <listeners> section:

    <!-- 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> all'interno della sezione di primo livello <configuration> .Locate the <sharedListeners> section, in the <system.diagnostics> section, in the top-level <configuration> section.

  6. Aggiungere l'elemento seguente alla sezione <sharedListeners> :Add this element to that <sharedListeners> section:

    <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 accetta uno dei valori di enumerazione di SourceLevels come proprio attributo initializeData.The EventTypeFilter filter takes one of the SourceLevels enumeration values as its initializeData attribute.

  7. Il contenuto del file app.config dovrebbe essere simile al codice XML seguente.The content of the app.config file should be similar to the following 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.Run the application in the debugger.

  9. Premere Button1.Press Button1.

    L'applicazione scrive le informazioni seguenti nel file di log dell'applicazione:The application writes the following information to the application's log file:

    Default Information: 0 : In Button1_Click

    Default Error: 2 : Error in the application.

    L'applicazione scrive meno informazioni nell'output di debug dell'applicazione perché il filtro è più restrittivo.The application writes less information to the application's debug output because of the more restrictive filtering.

    Default Error 2 Error

  10. Chiudere l'applicazione.Close the application.

Per altre informazioni sulla modifica delle impostazioni del log dopo la distribuzione, vedere Utilizzo dei log applicazione.For more information about changing log settings after deployment, see Working with Application Logs.

Vedere ancheSee also