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
Open een nieuw Visual Basic Windows-toepassingsproject.
Voeg een knop met de naam Button1 toe aan Form1.
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)
Voer de toepassing uit in het foutopsporingsprogramma.
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.
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 vanWriteEntry
enWriteException
de ernstniveaus 'Informatie' en 'Fout' zijn, die beide zijn toegestaan door het standaardlogboekfiltering van hetMy.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 , , Error of Warning Information |
Verbose |
Critical , , Error Warning , , of Information Verbose |
ActivityTracing |
Start , , Stop Suspend , , of Resume Transfer |
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
Klik met de rechtermuisknop op app.config in Solution Explorer en selecteer Openen.
– of –
Als er geen app.config-bestand is:
Kies Nieuw item toevoegen in het menu Project.
Kies in het dialoogvenster Nieuw item toevoegen het toepassingsconfiguratiebestand.
Klik op Toevoegen.
Zoek de
<switches>
sectie, die zich in de<system.diagnostics>
sectie bevindt, die zich in de sectie op het hoogste niveau<configuration>
bevindt.Zoek het element dat wordt toegevoegd
DefaultSwitch
aan de verzameling schakelopties. Deze moet er ongeveer als volgt uitzien:<add name="DefaultSwitch" value="Information" />
Wijzig de waarde van het
value
kenmerk in ActivityTracing.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>
Voer de toepassing uit in het foutopsporingsprogramma.
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
Sluit de toepassing.
Wijzig de waarde van het
value
kenmerk terug in 'Informatie'.Notitie
De
DefaultSwitch
schakeloptie-instelling bepaalt alleenMy.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
Klik met de rechtermuisknop op app.config in Solution Explorer en kies Openen.
– of –
Als er geen app.config-bestand is:
Kies Nieuw item toevoegen in het menu Project.
Kies in het dialoogvenster Nieuw item toevoegen het toepassingsconfiguratiebestand.
Klik op Toevoegen.
Klik met de rechtermuisknop op app.config in Solution Explorer. Kies Openen.
Zoek de
<listeners>
sectie in de<source>
sectie met hetname
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>
.Voeg dit element toe aan de
<listeners>
sectie:<!-- Remove the default debug listener. --> <remove name="Default"/> <!-- Add a filterable debug listener. --> <add name="NewDefault"/>
Zoek de
<sharedListeners>
sectie in de<system.diagnostics>
sectie op het hoogste niveau<configuration>
.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.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>
Voer de toepassing uit in het foutopsporingsprogramma.
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
Sluit de toepassing.
Zie Werken met toepassingslogboeken voor meer informatie over het wijzigen van logboekinstellingen na de implementatie.