Dela via


Genomgång: Filtrera My.Application.Log-utdata (Visual Basic)

Den här genomgången visar hur du ändrar standardloggfiltreringen My.Application.Log för objektet, för att styra vilken information som skickas från Log objektet till lyssnarna och vilken information som skrivs av lyssnarna. Du kan ändra loggningsbeteendet även när du har skapat programmet, eftersom konfigurationsinformationen lagras i programmets konfigurationsfil.

Komma igång

Varje meddelande som My.Application.Log skriver har en associerad allvarlighetsgrad, som filtreringsmekanismer använder för att styra loggutdata. Det här exempelprogrammet använder My.Application.Log metoder för att skriva flera loggmeddelanden med olika allvarlighetsnivåer.

Så här skapar du exempelprogrammet

  1. Öppna ett nytt Visual Basic Windows-programprojekt.

  2. Lägg till en knapp med namnet Button1 i Form1.

  3. Click Lägg till följande kod i händelsehanteraren för Button1:

    ' 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. Kör programmet i felsökningsprogrammet.

  5. Tryck på Knapp1.

    Programmet skriver följande information till programmets felsökningsutdata och loggfil.

    DefaultSource Information: 0 : In Button1_Click

    DefaultSource Error: 2 : Error in the application.

  6. Stäng programmet.

    Information om hur du visar programmets felsökningsutdatafönster finns i Utdatafönster. Information om platsen för programmets loggfil finns i Genomgång: Fastställa var my.application.log skriver information.

    Kommentar

    Som standard töms loggfilens utdata när programmet stängs.

    I exemplet ovan genererar det andra anropet WriteEntry till metoden och anropet till WriteException metoden loggutdata, medan de första och sista anropen WriteEntry till metoden inte gör det. Det beror på att allvarlighetsgraderna WriteEntry för och WriteException är "Information" och "Fel", som båda tillåts av My.Application.Log objektets standardloggfiltrering. Händelser med allvarlighetsgraderna "Start" och "Stop" hindras dock från att generera loggutdata.

Filtrering för alla my.application.log-lyssnare

Objektet My.Application.Log använder ett SourceSwitch namngivet namn DefaultSwitch för att styra vilka meddelanden som skickas från WriteEntry metoderna och WriteException till logglyssnare. Du kan konfigurera DefaultSwitch i programmets konfigurationsfil genom att ange dess värde till ett av SourceLevels uppräkningsvärdena. Som standard är dess värde "Information".

Den här tabellen visar allvarlighetsgraden som krävs för att loggen ska kunna skriva ett meddelande till lyssnarna med en viss DefaultSwitch inställning.

DefaultSwitch-värde Allvarlighetsgrad för meddelanden som krävs för utdata
Critical Critical
Error Critical eller Error
Warning Critical, Error eller Warning
Information Critical, Error, Warning, eller Information
Verbose Critical, Error, Warning, Information, eller Verbose
ActivityTracing Start, Stop, Suspend, Resume, eller Transfer
All Alla meddelanden tillåts.
Off Alla meddelanden blockeras.

Kommentar

Metoderna WriteEntry och WriteException har var och en en överlagring som inte anger någon allvarlighetsgrad. Den implicita allvarlighetsgraden för överbelastningen WriteEntry är "Information" och den implicita allvarlighetsgraden för överlagringen WriteException är "Fel".

I den här tabellen förklaras loggutdata som visas i föregående exempel: med standardinställningen DefaultSwitch "Information" genereras loggutdata endast det andra anropet WriteEntry till metoden och anropet WriteException till metoden.

Logga endast aktivitetsspårningshändelser

  1. Högerklicka på app.config i Solution Explorer och välj Öppna.

    -eller-

    Om det inte finns någon app.config-fil:

    1. På Projekt-menyn väljer du Lägg till nytt objekt.

    2. I dialogrutan Lägg till nytt objekt väljer du Programkonfigurationsfil.

    3. Klicka på Lägg till.

  2. Leta upp avsnittet <switches> , som finns i avsnittet <system.diagnostics> , som finns i avsnittet på den översta nivån <configuration> .

  3. Leta reda på elementet som lägger DefaultSwitch till i samlingen med växlar. Det bör se ut ungefär så här:

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

  4. Ändra värdet för value attributet till "ActivityTracing".

  5. Innehållet i filen app.config bör likna följande 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. Kör programmet i felsökningsprogrammet.

  7. Tryck på Knapp1.

    Programmet skriver följande information till programmets felsökningsutdata och loggfil:

    DefaultSource Start: 4 : Entering Button1_Click

    DefaultSource Stop: 5 : Leaving Button1_Click

  8. Stäng programmet.

  9. Ändra tillbaka värdet för value attributet till "Information".

    Kommentar

    Växelinställningen DefaultSwitch styr endast My.Application.Log. Det ändrar inte hur .NET System.Diagnostics.Trace och System.Diagnostics.Debug klasserna beter sig.

Individuell filtrering för my.application.log-lyssnare

I föregående exempel visas hur du ändrar filtreringen för alla My.Application.Log utdata. Det här exemplet visar hur du filtrerar en enskild logglyssnare. Som standard har ett program två lyssnare som skriver till programmets felsökningsutdata och loggfilen.

Konfigurationsfilen styr beteendet för logglyssnare genom att låta var och en ha ett filter, vilket liknar en växel för My.Application.Log. En logglyssnare matar endast ut ett meddelande om meddelandets allvarlighetsgrad tillåts av både loggens DefaultSwitch och logglyssningsfiltret.

Det här exemplet visar hur du konfigurerar filtrering för en ny felsökningslyssnare och lägger till den i Log objektet. Standardlyssnaren Log för felsökning bör tas bort från objektet, så det är tydligt att felsökningsmeddelandena kommer från den nya felsökningslyssnaren.

Logga endast aktivitetsspårningshändelser

  1. Högerklicka på app.config i Solution Explorer och välj Öppna.

    -eller-

    Om det inte finns någon app.config-fil:

    1. På Projekt-menyn väljer du Lägg till nytt objekt.

    2. I dialogrutan Lägg till nytt objekt väljer du Programkonfigurationsfil.

    3. Klicka på Lägg till.

  2. Högerklicka på app.config i Solution Explorer. Välj Öppna.

  3. <listeners> Leta upp avsnittet i avsnittet <source> med name attributet "DefaultSource", som finns under avsnittet <sources> . Avsnittet <sources> finns i avsnittet <system.diagnostics> på den översta nivån <configuration> .

  4. Lägg till det här elementet i <listeners> avsnittet:

    <!-- Remove the default debug listener. -->
    <remove name="Default"/>
    <!-- Add a filterable debug listener. -->
    <add name="NewDefault"/>
    
  5. Leta upp avsnittet <sharedListeners> i avsnittet <system.diagnostics> i avsnittet på den översta nivån <configuration> .

  6. Lägg till det här elementet i det <sharedListeners> avsnittet:

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

    EventTypeFilter Filtret tar ett av uppräkningsvärdena SourceLevels som attributinitializeData.

  7. Innehållet i filen app.config bör likna följande 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. Kör programmet i felsökningsprogrammet.

  9. Tryck på Knapp1.

    Programmet skriver följande information till programmets loggfil:

    Default Information: 0 : In Button1_Click

    Default Error: 2 : Error in the application.

    Programmet skriver mindre information till programmets felsökningsutdata på grund av den mer restriktiva filtreringen.

    Default Error 2 Error

  10. Stäng programmet.

Mer information om hur du ändrar logginställningar efter distributionen finns i Arbeta med programloggar.

Se även