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
Öppna ett nytt Visual Basic Windows-programprojekt.
Lägg till en knapp med namnet Button1 i Form1.
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)
Kör programmet i felsökningsprogrammet.
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.
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 allvarlighetsgradernaWriteEntry
för ochWriteException
är "Information" och "Fel", som båda tillåts avMy.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
Högerklicka på app.config i Solution Explorer och välj Öppna.
-eller-
Om det inte finns någon app.config-fil:
På Projekt-menyn väljer du Lägg till nytt objekt.
I dialogrutan Lägg till nytt objekt väljer du Programkonfigurationsfil.
Klicka på Lägg till.
Leta upp avsnittet
<switches>
, som finns i avsnittet<system.diagnostics>
, som finns i avsnittet på den översta nivån<configuration>
.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" />
Ändra värdet för
value
attributet till "ActivityTracing".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>
Kör programmet i felsökningsprogrammet.
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
Stäng programmet.
Ändra tillbaka värdet för
value
attributet till "Information".Kommentar
Växelinställningen
DefaultSwitch
styr endastMy.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
Högerklicka på app.config i Solution Explorer och välj Öppna.
-eller-
Om det inte finns någon app.config-fil:
På Projekt-menyn väljer du Lägg till nytt objekt.
I dialogrutan Lägg till nytt objekt väljer du Programkonfigurationsfil.
Klicka på Lägg till.
Högerklicka på app.config i Solution Explorer. Välj Öppna.
<listeners>
Leta upp avsnittet i avsnittet<source>
medname
attributet "DefaultSource", som finns under avsnittet<sources>
. Avsnittet<sources>
finns i avsnittet<system.diagnostics>
på den översta nivån<configuration>
.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"/>
Leta upp avsnittet
<sharedListeners>
i avsnittet<system.diagnostics>
i avsnittet på den översta nivån<configuration>
.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 attribut
initializeData
.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>
Kör programmet i felsökningsprogrammet.
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
Stäng programmet.
Mer information om hur du ändrar logginställningar efter distributionen finns i Arbeta med programloggar.