Condividi tramite


Procedura dettagliata: modifica della posizione di inserimento delle informazioni con My.Application.Log

Aggiornamento: novembre 2007

È possibile utilizzare gli oggetti My.Application.Log e My.Log per registrare informazioni sugli eventi che si verificano nell'applicazione. In questa procedura dettagliata viene mostrato come sovrascrivere le impostazioni predefinite e fare in modo che l'oggetto Log scriva su altri listener di log.

Prerequisiti

L'oggetto Log può scrivere informazioni su diversi listener di log. Prima di cambiare la configurazione dei listener di log è necessario determinarne la configurazione corrente. Per ulteriori informazioni, vedere Procedura dettagliata: individuazione della posizione di inserimento delle informazioni con My.Application.Log.

Può essere opportuno consultare Procedura: scrivere informazioni sugli eventi in un file di testo e Procedura: scrivere nel log eventi di un'applicazione.

Per aggiungere listener

  1. Fare clic con il pulsante destro del mouse sul file app.config in Esplora soluzioni, quindi 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 selezionare File di configurazione dell'applicazione.

    3. Fare clic su Aggiungi.

  2. Individuare la sezione <listeners>, all'interno della sezione <source> con l'attributo name "DefaultSource", a sua volta contenuta nella sezione <sources>. La sezione <sources> si trova nella sezione <system.diagnostics>, a sua volta contenuta nella sezione <configuration> di primo livello.

  3. Aggiungere gli elementi di seguito riportati alla sezione <listeners>.

    <!-- Uncomment to connect the application file log. -->
    <!-- <add name="FileLog" /> -->
    <!-- Uncomment to connect the event log. -->
    <!-- <add name="EventLog" /> -->
    <!-- Uncomment to connect the event log. -->
    <!-- <add name="Delimited" /> -->
    <!-- Uncomment to connect the XML log. -->
    <!-- <add name="XmlWriter" /> -->
    <!-- Uncomment to connect the console log. -->
    <!-- <add name="Console" /> -->
    
  4. Rimuovere il commento dai listener di log per i quali si desidera ricevere i messaggi di Log.

  5. Individuare la sezione <sharedListeners>, contenuta nella sezione <system.diagnostics>, a sua volta contenuta nella sezione <configuration> di primo livello.

  6. Aggiungere gli elementi di seguito riportati alla sezione <sharedListeners>.

          <add name="FileLog"
               type="Microsoft.VisualBasic.Logging.FileLogTraceListener, 
                     Microsoft.VisualBasic, Version=8.0.0.0, 
                     Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
               initializeData="FileLogWriter" />
          <add name="EventLog"
               type="System.Diagnostics.EventLogTraceListener, 
                     System, Version=2.0.0.0, 
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="sample application"/>
          <add name="Delimited" 
               type="System.Diagnostics.DelimitedListTraceListener, 
                     System, Version=2.0.0.0, 
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="c:\temp\sampleDelimitedFile.txt"
               delimiter=";;;"
               traceOutputOptions="DateTime" />
          <add name="XmlWriter"
               type="System.Diagnostics.XmlWriterTraceListener, 
                     System, Version=2.0.0.0, 
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="c:\temp\sampleLogFile.xml" />
          <add name="Console"
               type="System.Diagnostics.ConsoleTraceListener, 
                     System, Version=2.0.0.0, 
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="true" />
    
  7. Il contenuto del file app.config dovrebbe essere simile al codice XML di seguito riportato.

    <?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"/>
              <!-- Uncomment to connect the application file log. -->
              <!-- <add name="FileLog" /> -->
              <!-- Uncomment to connect the event log. -->
              <!-- <add name="EventLog" /> -->
              <!-- Uncomment to connect the event log. -->
              <!-- <add name="Delimited" /> -->
              <!-- Uncomment to connect the XML log. -->
              <!-- <add name="XmlWriter" /> -->
              <!-- Uncomment to connect the console log. -->
              <!-- <add name="Console" /> -->
            </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"
               initializeData="FileLogWriter" />
          <add name="EventLog"
               type="System.Diagnostics.EventLogTraceListener, 
                     System, Version=2.0.0.0, 
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="sample application"/>
          <add name="Delimited" 
               type="System.Diagnostics.DelimitedListTraceListener, 
                     System, Version=2.0.0.0, 
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="c:\temp\sampleDelimitedFile.txt"
               delimiter=";;;"
               traceOutputOptions="DateTime" />
          <add name="XmlWriter"
               type="System.Diagnostics.XmlWriterTraceListener, 
                     System, Version=2.0.0.0, 
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="c:\temp\sampleLogFile.xml" />
          <add name="Console"
               type="System.Diagnostics.ConsoleTraceListener, 
                     System, Version=2.0.0.0, 
                     Culture=neutral, PublicKeyToken=b77a5c561934e089"
               initializeData="true" />
        </sharedListeners>
      </system.diagnostics>
    </configuration>
    

Per riconfigurare un listener

  1. Individuare l'elemento <add> del listener nella sezione <sharedListeners>.

  2. L'attributo type fornisce il nome del tipo di listener. Questo tipo può ereditare dalla classe TraceListener. Utilizzare il nome di tipo sicuro per assicurarsi di impiegare quello corretto. Per ulteriori informazioni, vedere la sezione "Per aggiungere riferimenti a un tipo con nome sicuro" riportata di seguito.

    Di seguito sono riportati alcuni esempi di listener che si possono utilizzare.

    Per sapere dove altri tipi di listener di log scrivono le informazioni, consultare la documentazione relativa al tipo di listener desiderato.

  3. Quando l'applicazione crea l'oggetto listener di log, questa passa l'attributo initializeData come parametro di costruttore. Il significato dell'attributo initializeData dipende dal listener di analisi.

  4. Una volta creato il listener di log, l'applicazione imposta le proprietà del listener. Tali proprietà sono definite dagli altri attributi contenuti nell'elemento <add>. Per ulteriori informazioni sulle proprietà di un determinato listener, consultare la documentazione relativa al tipo di listener corrispondente.

Per aggiungere riferimenti a un tipo con nome sicuro

  1. Per assicurarsi di utilizzare il tipo di listener di log adeguato, utilizzare il nome di tipo completo e il nome di assembly sicuro. La sintassi di un tipo con nome sicuro è la seguente:

    <type name>, <assembly name>, <version number>, <culture>, <strong name>

  2. L'esempio di codice di seguito riportato mostra come determinare il nome di tipo sicuro per un tipo completo, in questo caso "System.Diagnostics.FileLogTraceListener".

    Public Sub DisplayStrongName()
        Dim t As Type = GetType(Logging.FileLogTraceListener)
        MsgBox(t.FullName & ", " & t.Assembly.FullName)
    End Sub
    

    Questo è l'output, e può essere utilizzato per aggiungere riferimenti univoci a un tipo con nome sicuro, come nella procedura "Per aggiungere listener" sopra riportata.

    Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

Vedere anche

Attività

Procedura: scrivere informazioni sugli eventi in un file di testo

Procedura: scrivere nel log eventi di un'applicazione

Riferimenti

Oggetto My.Application.Log

Oggetto My.Log

TraceListener

Microsoft.VisualBasic.Logging.FileLogTraceListener

System.Diagnostics.EventLogTraceListener