Delen via


Overzicht: My.Application.Log-uitvoer filteren (Visual Basic)

In dit overzicht ziet u hoe u het standaardlogboekfilter voor het My.Application.Log object wijzigt om te bepalen welke informatie van het Log object wordt doorgegeven aan de listeners en welke informatie wordt geschreven door de listeners. U kunt het logboekgedrag zelfs wijzigen nadat u de toepassing hebt gebouwd, omdat de configuratiegegevens worden opgeslagen in het configuratiebestand van de toepassing.

Aan de slag

Elk bericht dat My.Application.Log schrijft, heeft een gekoppeld ernstniveau, dat filtermechanismen gebruiken om de logboekuitvoer te beheren. In deze voorbeeldtoepassing worden methoden gebruikt My.Application.Log voor het schrijven van verschillende logboekberichten met verschillende ernstniveaus.

De voorbeeldtoepassing bouwen

  1. Open een nieuw Visual Basic Windows-toepassingsproject.

  2. Voeg een knop met de naam Button1 toe aan Form1.

  3. Voeg in de Click gebeurtenis-handler voor Button1 de volgende code toe:

    ' 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. Voer de toepassing uit in het foutopsporingsprogramma.

  5. Druk op Knop1.

    De toepassing schrijft de volgende informatie naar de foutopsporingsuitvoer en het logboekbestand van de toepassing.

    DefaultSource Information: 0 : In Button1_Click

    DefaultSource Error: 2 : Error in the application.

  6. Sluit de toepassing.

    Zie Uitvoervenster voor informatie over het weergeven van het uitvoervenster voor foutopsporing van de toepassing. Zie Walkthrough: Bepalen waar My.Application.Log informatie schrijft voor informatie over de locatie van het logboekbestand van de toepassing.

    Notitie

    De toepassing maakt standaard de uitvoer van het logboekbestand leeg wanneer de toepassing wordt gesloten.

    In het bovenstaande voorbeeld produceert de tweede aanroep van de WriteEntry methode en de aanroep naar de WriteException methode logboekuitvoer, terwijl de eerste en laatste aanroepen naar de WriteEntry methode dat niet doen. Dit komt doordat de ernstniveaus van WriteEntry en WriteException de ernstniveaus 'Informatie' en 'Fout' zijn, die beide zijn toegestaan door het standaardlogboekfiltering van het My.Application.Log object. Gebeurtenissen met de ernstniveaus 'Starten' en 'Stoppen' kunnen echter geen logboekuitvoer produceren.

Filteren voor alle listeners my.application.log

Het My.Application.Log object gebruikt een SourceSwitch benoemde naam DefaultSwitch om te bepalen welke berichten het van de WriteEntry en WriteException methoden doorgeeft aan de logboeklisteners. U kunt in het configuratiebestand van de toepassing configureren DefaultSwitch door de waarde ervan in te stellen op een van de SourceLevels opsommingswaarden. De waarde is standaard 'Informatie'.

In deze tabel ziet u het ernstniveau dat is vereist voor het schrijven van een bericht naar de listeners, op basis van een bepaalde DefaultSwitch instelling.

DefaultSwitch-waarde Ernst van bericht vereist voor uitvoer
Critical Critical
Error Critical of Error
Warning Critical, Error of Warning
Information Critical, , Errorof WarningInformation
Verbose Critical, , ErrorWarning, , of InformationVerbose
ActivityTracing Start, , StopSuspend, , of ResumeTransfer
All Alle berichten zijn toegestaan.
Off Alle berichten worden geblokkeerd.

Notitie

De WriteEntry en WriteException methoden hebben elk een overbelasting die geen ernstniveau opgeeft. Het impliciete ernstniveau voor de WriteEntry overbelasting is 'Informatie' en het impliciete ernstniveau voor de WriteException overbelasting is 'Fout'.

In deze tabel wordt de logboekuitvoer in het vorige voorbeeld uitgelegd: met de standaardinstelling DefaultSwitch 'Informatie', alleen de tweede aanroep naar de WriteEntry methode en de aanroep naar de WriteException methode produceren logboekuitvoer.

Alleen gebeurtenissen voor het traceren van activiteiten registreren

  1. Klik met de rechtermuisknop op app.config in Solution Explorer en selecteer Openen.

    – of –

    Als er geen app.config-bestand is:

    1. Kies Nieuw item toevoegen in het menu Project.

    2. Kies in het dialoogvenster Nieuw item toevoegen het toepassingsconfiguratiebestand.

    3. Klik op Toevoegen.

  2. Zoek de <switches> sectie, die zich in de <system.diagnostics> sectie bevindt, die zich in de sectie op het hoogste niveau <configuration> bevindt.

  3. Zoek het element dat wordt toegevoegd DefaultSwitch aan de verzameling schakelopties. Deze moet er ongeveer als volgt uitzien:

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

  4. Wijzig de waarde van het value kenmerk in ActivityTracing.

  5. De inhoud van het bestand app.config moet vergelijkbaar zijn met de volgende 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. Voer de toepassing uit in het foutopsporingsprogramma.

  7. Druk op Knop1.

    De toepassing schrijft de volgende informatie naar de foutopsporingsuitvoer en het logboekbestand van de toepassing:

    DefaultSource Start: 4 : Entering Button1_Click

    DefaultSource Stop: 5 : Leaving Button1_Click

  8. Sluit de toepassing.

  9. Wijzig de waarde van het value kenmerk terug in 'Informatie'.

    Notitie

    De DefaultSwitch schakeloptie-instelling bepaalt alleen My.Application.Log. De werking van .NET System.Diagnostics.Trace en System.Diagnostics.Debug klassen wordt niet gewijzigd.

Afzonderlijke filters voor my.application.log-listeners

In het vorige voorbeeld ziet u hoe u het filter voor alle My.Application.Log uitvoer kunt wijzigen. In dit voorbeeld ziet u hoe u een afzonderlijke logboeklistener filtert. Een toepassing heeft standaard twee listeners die schrijven naar de foutopsporingsuitvoer van de toepassing en het logboekbestand.

Het configuratiebestand bepaalt het gedrag van de logboeklisteners door elk bestand toe te staan een filter te hebben, wat vergelijkbaar is met een switch voor My.Application.Log. Een logboeklistener voert alleen een bericht uit als de ernst van het bericht is toegestaan door zowel het logboek DefaultSwitch - als het filter van de logboeklistener.

In dit voorbeeld ziet u hoe u filteren configureert voor een nieuwe listener voor foutopsporing en deze toevoegt aan het Log object. De standaard listener voor foutopsporing moet worden verwijderd uit het Log object, dus het is duidelijk dat de foutopsporingsberichten afkomstig zijn van de nieuwe listener voor foutopsporing.

Alleen activiteitentraceringsgebeurtenissen registreren

  1. Klik met de rechtermuisknop op app.config in Solution Explorer en kies Openen.

    – of –

    Als er geen app.config-bestand is:

    1. Kies Nieuw item toevoegen in het menu Project.

    2. Kies in het dialoogvenster Nieuw item toevoegen het toepassingsconfiguratiebestand.

    3. Klik op Toevoegen.

  2. Klik met de rechtermuisknop op app.config in Solution Explorer. Kies Openen.

  3. Zoek de <listeners> sectie in de <source> sectie met het name kenmerk DefaultSource, dat zich onder de <sources> sectie bevindt. De <sources> sectie bevindt zich onder de <system.diagnostics> sectie, in de sectie op het hoogste niveau <configuration> .

  4. Voeg dit element toe aan de <listeners> sectie:

    <!-- Remove the default debug listener. -->
    <remove name="Default"/>
    <!-- Add a filterable debug listener. -->
    <add name="NewDefault"/>
    
  5. Zoek de <sharedListeners> sectie in de <system.diagnostics> sectie op het hoogste niveau <configuration> .

  6. Voeg dit element toe aan die <sharedListeners> sectie:

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

    Het EventTypeFilter filter gebruikt een van de SourceLevels opsommingswaarden als initializeData kenmerk.

  7. De inhoud van het bestand app.config moet vergelijkbaar zijn met de volgende 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. Voer de toepassing uit in het foutopsporingsprogramma.

  9. Druk op Knop1.

    De toepassing schrijft de volgende informatie naar het logboekbestand van de toepassing:

    Default Information: 0 : In Button1_Click

    Default Error: 2 : Error in the application.

    De toepassing schrijft minder informatie naar de foutopsporingsuitvoer van de toepassing vanwege de meer beperkende filters.

    Default Error 2 Error

  10. Sluit de toepassing.

Zie Werken met toepassingslogboeken voor meer informatie over het wijzigen van logboekinstellingen na de implementatie.

Zie ook