Condividi tramite


Procedura dettagliata: Modifica della posizione in cui My.Application.Log scrive informazioni (Visual Basic)

È possibile usare gli My.Application.Log oggetti e My.Log per registrare informazioni sugli eventi che si verificano nell'applicazione. Questa procedura dettagliata illustra come eseguire l'override delle impostazioni predefinite e fare in modo che l'oggetto Log scriva in altri listener di log.

Prerequisiti

L'oggetto Log può scrivere informazioni in diversi listener di log. È necessario determinare la configurazione corrente dei listener di log prima di modificare le configurazioni. Per altre informazioni, vedere Procedura dettagliata: Determinazione della posizione in cui My.Application.Log scrive informazioni.

È possibile consultare Procedura: Scrivere informazioni sugli eventi in un file di testo o Procedura: Scrivere in un registro eventi dell'applicazione.

Per aggiungere ascoltatori

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

    - o -

    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> nella sezione <source> con l'attributo name "DefaultSource", nella sezione <sources>. La sezione <sources> si trova nella sezione <system.diagnostics>, che è nella sezione di primo livello <configuration>.

  3. Aggiungere questi elementi a tale <listeners> sezione.

    <!-- 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. Decommenta i listener di log da cui desideri ricevere i messaggi Log.

  5. Individuare la sezione <sharedListeners> nella sezione <system.diagnostics> nella sezione di primo livello <configuration>.

  6. Aggiungere questi elementi a tale <sharedListeners> sezione.

    <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"
         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 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"/>
              <!-- 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"
               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. Individua l'elemento <add> del listener dalla sezione <sharedListeners>.

  2. L'attributo type assegna il nome del tipo di listener. Questo tipo deve ereditare dalla TraceListener classe . Utilizzare il nome del tipo con firma forte per garantire che venga usato il tipo corretto. Per ulteriori informazioni, vedere di seguito la sezione "Per fare riferimento a un tipo nominato fortemente".

    Alcuni tipi che è possibile usare sono:

    Per informazioni su dove altri tipi di listener di log scrivono informazioni, consultare la documentazione di quel tipo.

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

  4. Dopo aver creato il listener di log, l'applicazione ne imposta le proprietà. Queste proprietà sono definite dagli altri attributi nell'elemento <add> . Per altre informazioni sulle proprietà per un listener specifico, vedere la documentazione relativa al tipo del listener.

Per fare riferimento a un tipo con nome forte

  1. Per garantire l'uso del tipo corretto per il listener di log, è importante utilizzare il nome completo del tipo e il nome dell'assembly fortemente nominato. La sintassi di un tipo fortemente denominato è la seguente:

    < nome del tipo>, <nome dell'assembly>, <numero di versione>, <cultura>, <nome sicuro>

  2. In questo esempio di codice viene illustrato come determinare il nome del tipo con un nome forte per un tipo completamente qualificato, ovvero "System.Diagnostics.FileLogTraceListener" in questo caso.

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

    Si tratta dell'output e può essere usato per fare riferimento in modo univoco a un tipo fortemente nominato, come nella procedura indicata "Per aggiungere ascoltatori" precedente.

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

Vedere anche