Gebeurtenissen bijhouden in gebeurtenistracering in Windows
Het EtwTracking-voorbeeld laat zien hoe u WF-tracering (Windows Workflow Foundation) inschakelt op een werkstroomservice en de traceringsgebeurtenissen verzendt in Event Tracing for Windows (ETW). Voor het verzenden van werkstroomtrackingrecords in ETW gebruikt het voorbeeld de ETW-traceringsdeelnemer (EtwTrackingParticipant).
De werkstroom in het voorbeeld ontvangt een aanvraag, wijst de wederzijdse invoergegevens toe aan de invoervariabele en retourneert de wederzijdse terugkoppeling naar de client. Wanneer de invoergegevens 0 zijn, treedt er een scheiding op door nuluitzondering die ervoor zorgt dat de werkstroom wordt afgebroken. Als tracering is ingeschakeld, wordt de record voor fouttracking verzonden naar ETW, wat kan helpen bij het later oplossen van de fout. De ETW-traceringsdeelnemer is geconfigureerd met een traceringsprofiel om u te abonneren op traceringsrecords. Het traceringsprofiel wordt gedefinieerd in het Web.config-bestand en wordt geleverd als een configuratieparameter voor de ETW-traceringsdeelnemer. De deelnemer voor ETW-tracering wordt geconfigureerd in het Web.config-bestand van de werkstroomservice en wordt toegepast op de service als servicegedrag. In dit voorbeeld bekijkt u de traceringsgebeurtenissen in het gebeurtenislogboek met behulp van Logboeken.
Details van werkstroomtracering
Windows Workflow Foundation biedt een traceringsinfrastructuur voor het bijhouden van de uitvoering van een werkstroomexemplaren. De trackingruntime maakt een werkstroomexemplaren om gebeurtenissen te verzenden die betrekking hebben op de levenscyclus van de werkstroom, gebeurtenissen van werkstroomactiviteiten en aangepaste gebeurtenissen. De volgende tabel bevat informatie over de primaire onderdelen van de traceringsinfrastructuur.
Onderdeel | Beschrijving |
---|---|
Runtime bijhouden | Biedt de infrastructuur voor het verzenden van traceringsrecords. |
Deelnemers bijhouden | Hiermee worden de traceringsrecords geopend. .NET Framework 4.6.1 wordt geleverd met een traceringsdeelnemer die traceringsrecords schrijft als Gebeurtenistracering voor Windows-gebeurtenissen (ETW). |
Traceringsprofiel | Een filtermechanisme waarmee een traceringsdeelnemer zich kan abonneren op een subset van de traceringsrecords die zijn verzonden vanuit een werkstroomexemplaren. |
De volgende tabel bevat informatie over de traceringsrecords die door de werkstroomruntime worden verzonden.
Traceringsrecord | Beschrijving |
---|---|
Records voor het bijhouden van werkstroomexemplaren. | Beschrijft de levenscyclus van het werkstroomexemplaren. Een exemplaarrecord wordt bijvoorbeeld verzonden wanneer de werkstroom wordt gestart of voltooid. |
Records voor het bijhouden van activiteitsstatussen. | Details van de uitvoering van activiteit. Deze records geven de status van een werkstroomactiviteit aan, zoals wanneer een activiteit wordt gepland of wanneer de activiteit is voltooid of wanneer er een fout optreedt. |
Record voor hervatting van bladwijzers. | Wordt verzonden wanneer een bladwijzer in een werkstroomexemplaren wordt hervat. |
Aangepaste traceringsrecords. | Een auteur van een werkstroom kan aangepaste traceringsrecords maken en deze verzenden binnen de aangepaste activiteit. |
ActivityScheduledRecord | Deze record wordt verzonden wanneer een activiteit een andere activiteit plant. |
FaultPropagationRecord | Deze record wordt verzonden wanneer een fout wordt doorgegeven vanuit een activiteit. |
CancelRequestedRecord | Deze record wordt verzonden wanneer een activiteit wordt geannuleerd door een andere activiteit. |
De traceringsdeelnemer abonneert zich op een subset van de verzonden traceringsrecords met behulp van traceringsprofielen. Een traceringsprofiel bevat traceringsquery's waarmee u zich kunt abonneren op een bepaald traceringsrecordtype. Traceringsprofielen kunnen worden opgegeven in code of in configuratie.
Dit voorbeeld gebruiken
Open met Visual Studio het EtwTrackingParticipantSample.sln-oplossingsbestand.
Druk op Ctrl+Shift+B om de oplossing te bouwen.
Druk op F5 om de oplossing uit te voeren.
De service luistert standaard op poort 53797 (
http://localhost:53797/SampleWorkflowService.xamlx
).Open de WCF-testclient met behulp van Bestandenverkenner.
De WCF-testclient (WcfTestClient.exe) bevindt zich in de <installatiemap> van Visual Studio\Common7\IDE\.
De standaardinstallatiemap van Visual Studio is C:\Program Files\Microsoft Visual Studio 10.0.
Selecteer Service toevoegen in de WCF-testclient in het menu Bestand .
Voeg het eindpuntadres toe aan het invoervak. De standaardwaarde is
http://localhost:53797/SampleWorkflowService.xamlx
.Open de Logboeken-toepassing.
Voordat u de service aanroept, start u Logboeken in het menu Start, selecteert u Uitvoeren en typt
eventvwr.exe
u . Zorg ervoor dat het gebeurtenislogboek luistert naar het bijhouden van gebeurtenissen die zijn verzonden vanuit de werkstroomservice.Navigeer in de structuurweergave van de Logboeken naar Logboeken, toepassings- en serviceslogboeken en Microsoft. Klik met de rechtermuisknop op Microsoft en selecteer Weergeven en vervolgens Analyse- en foutopsporingslogboeken weergeven om de analyse- en foutopsporingslogboeken in te schakelen
Zorg ervoor dat de optie Analyse- en foutopsporingslogboeken weergeven is ingeschakeld.
Navigeer in de structuurweergave in Logboeken naar Logboeken, Logboeken toepassingen en services, Microsoft, Windows, Toepassingsservertoepassingen. Klik met de rechtermuisknop op Analyse en selecteer Logboek inschakelen om het analyselogboek in te schakelen.
Test de service met behulp van de WCF-testclient door te dubbelklikken
GetData
.Hiermee opent u de
GetData
methode. De aanvraag accepteert één parameter en zorgt ervoor dat de waarde 0 is, wat de standaardwaarde is.Klik op Aanroepen.
Bekijk de gebeurtenissen die zijn verzonden vanuit de werkstroom.
Ga terug naar Logboeken en navigeer naar Logboeken- en serviceslogboeken, Microsoft, Windows, Application Server-Applications. Klik met de rechtermuisknop op Analyse en selecteer Vernieuwen.
De werkstroomgebeurtenissen worden weergegeven in de logboeken. U ziet dat gebeurtenissen voor werkstroomuitvoering worden weergegeven en dat een van deze gebeurtenissen een onverwerkte uitzondering is die overeenkomt met de fout in de werkstroom. Er wordt ook een waarschuwingsevenement verzonden vanuit de werkstroomactiviteit, wat aangeeft dat de activiteit een fout veroorzaakt.
Herhaal stap 9 en 10 met een andere invoer van gegevens dan 0, zodat er geen fout wordt gegenereerd.
Met traceringsprofielen kunt u zich abonneren op gebeurtenissen die door de runtime worden verzonden wanneer de status van een werkstroomexemplaren wordt gewijzigd. Afhankelijk van uw bewakingsvereisten kunt u een profiel maken dat erg grof is, waardoor u zich abonneert op een kleine set statuswijzigingen op hoog niveau in een werkstroom. Aan de andere kant kunt u een zeer nauwkeurig profiel maken waarvan de uitvoer rijk genoeg is om de uitvoering later te reconstrueren. In het voorbeeld ziet u de gebeurtenissen die zijn verzonden van de werkstroomruntime naar ETW met behulp van de HealthMonitoring Tracking Profile
, waarmee een kleine set gebeurtenissen wordt verzonden. Een ander profiel dat meer gebeurtenissen voor het bijhouden van werkstromen verzendt, is ook beschikbaar in de web.config met de naam Troubleshooting Tracking Profile
. Wanneer .NET Framework 4.6.1 is geïnstalleerd, wordt een standaardprofiel met een lege naam geconfigureerd in het bestand Machine.config. Dit profiel wordt gebruikt door de configuratie van het ETW-traceringsgedrag wanneer er geen profielnaam of een lege profielnaam is opgegeven.
Het traceringsprofiel voor statuscontrole verzendt records van werkstroomexemplaren en records voor foutdoorgifte van activiteiten. Dit profiel wordt gemaakt door het volgende traceringsprofiel toe te voegen aan een Web.config-configuratiebestand.
<tracking>
<profiles>
<trackingProfile name="HealthMonitoring Tracking Profile">
<workflow activityDefinitionId="*">
<workflowInstanceQueries>
<workflowInstanceQuery>
<states>
<state name="Started"/>
<state name="Completed"/>
<state name="Aborted"/>
<state name="UnhandledException"/>
</states>
</workflowInstanceQuery>
</workflowInstanceQueries>
<faultPropagationQueries>
<faultPropagationQuery faultSourceActivityName ="*" faultHandlerActivityName="*"/>
</faultPropagationQueries>
</workflow>
</trackingProfile>
</profiles>
</tracking>
Het profiel kan worden gewijzigd door de EtwTrackingParticipant
configuratie te wijzigen in het volgende.
<behaviors>
<serviceBehaviors>
<behavior>
<etwTracking profileName="HealthMonitoring Tracking Profile"/>
</behavior>
</serviceBehaviors>
</behaviors>
Opschonen (optioneel)
Open de Logboeken.
Navigeer naar Logboeken, Logboeken toepassingen en services, Microsoft, Windows, Toepassingsservertoepassingen. Klik met de rechtermuisknop op Analyse en selecteer Logboek uitschakelen.
Navigeer naar Logboeken, Logboeken toepassingen en services, Microsoft, Windows, Toepassingsservertoepassingen. Klik met de rechtermuisknop op Analyse en selecteer Logboek wissen.
Kies de optie Wissen om de gebeurtenissen te wissen.
Bekend probleem
Notitie
Er is een bekend probleem in de Logboeken waar ETW-gebeurtenissen mogelijk niet kunnen worden gedecodeerd. Mogelijk ziet u een foutbericht dat er als volgt uitziet.
De beschrijving voor de gebeurtenis-id <> van de bron-Microsoft-Windows-Application Server-Applications kan niet worden gevonden. Het onderdeel dat deze gebeurtenis genereert, is niet geïnstalleerd op uw lokale computer of de installatie is beschadigd. U kunt het onderdeel installeren of herstellen op de lokale computer.
Als deze fout optreedt, klikt u op Vernieuwen in het deelvenster Acties. De gebeurtenis moet nu correct worden gedecodeerd.