Tracering configureren
In dit onderwerp wordt beschreven hoe u tracering kunt inschakelen, traceringsbronnen kunt configureren om traceringen te verzenden en traceringsniveaus in te stellen, activiteitentracering en doorgifte in te stellen om end-to-end-traceringscorrelatie te ondersteunen en traceringslisteners in te stellen voor toegang tot traceringen.
Belangrijk
In Windows 8 moet u uw toepassing uitvoeren met verhoogde bevoegdheid (Uitvoeren als Beheer istrator) om uw toepassing traceringslogboeken te laten genereren.
Tracering inschakelen
Windows Communication Foundation (WCF) voert de volgende gegevens uit voor diagnostische tracering:
Traceringen voor procesmijlpalen voor alle onderdelen van de toepassingen, zoals bewerkingsoproepen, codeuitzonderingen, waarschuwingen en andere belangrijke verwerkingsevenementen.
Windows-fout gebeurtenissen wanneer de traceringsfunctie defect is. Zie Gebeurtenislogboekregistratie.
WCF-tracering is gebouwd op System.Diagnostics. Als u tracering wilt gebruiken, moet u traceringsbronnen definiƫren in het configuratiebestand of in code. WCF definieert een traceringsbron voor elke WCF-assembly. De System.ServiceModel
traceringsbron is de meest algemene WCF-traceringsbron en registreert de verwerkingsmijlpalen in de WCF-communicatiestack, van het invoeren/verlaten van transport tot het invoeren/verlaten van gebruikerscode. De System.ServiceModel.MessageLogging
traceringsbron registreert alle berichten die door het systeem stromen.
Tracering is niet standaard ingeschakeld. Als u tracering wilt activeren, moet u een traceringslistener maken en een ander traceringsniveau dan 'Uit' instellen voor de geselecteerde traceringsbron in de configuratie; anders genereert WCF geen traceringen. Als u geen listener opgeeft, wordt tracering automatisch uitgeschakeld. Als een listener is gedefinieerd, maar er geen niveau is opgegeven, wordt het niveau standaard ingesteld op 'Uit', wat betekent dat er geen tracering wordt verzonden.
Als u WCF-uitbreidbaarheidspunten zoals aangepaste aanroepers voor bewerkingen gebruikt, moet u uw eigen traceringen verzenden. Dit komt doordat als u een uitbreidbaarheidspunt implementeert, WCF de standaardtraceringen niet meer in het standaardpad kan verzenden. Als u geen ondersteuning voor handmatige tracering implementeert door traceringen te verzenden, ziet u mogelijk niet de traceringen die u verwacht.
U kunt tracering configureren door het configuratiebestand van de toepassing te bewerken: Web.config voor toepassingen die worden gehost op het web of Appname.exe.config voor zelf-hostende toepassingen. Hier volgt een voorbeeld van een dergelijke bewerking. Zie de sectie Tracelisteners configureren om traceringen te gebruiken voor meer informatie over deze instellingen.
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\log\Traces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
Notitie
Als u het configuratiebestand van een WCF-serviceproject in Visual Studio wilt bewerken, klikt u met de rechtermuisknop op het configuratiebestand van de toepassing: Web.config voor web-hostende toepassingen of Appname.exe.config voor zelf-hostende toepassing in Solution Explorer. Kies vervolgens het contextmenu-item WCF-configuratie bewerken. Hiermee start u het hulpprogramma voor configuratie-editor (SvcConfigEditor.exe), waarmee u configuratie-instellingen voor WCF-services kunt wijzigen met behulp van een grafische gebruikersinterface.
Traceringsbronnen configureren voor het verzenden van traceringen
WCF definieert een traceringsbron voor elke assembly. Traceringen die in een assembly worden gegenereerd, worden geopend door de listeners die voor die bron zijn gedefinieerd. De volgende traceringsbronnen zijn gedefinieerd:
System.ServiceModel: registreert alle fasen van WCF-verwerking, wanneer de configuratie wordt gelezen, een bericht wordt verwerkt in transport, beveiligingsverwerking, een bericht wordt verzonden in gebruikerscode, enzovoort.
System.ServiceModel.MessageLogging: registreert alle berichten die door het systeem stromen.
System.IdentityModel.
System.ServiceModel.Activation.
System.IO.Log: Logboekregistratie voor de .NET Framework-interface naar het Common Log File System (CLFS).
System.Runtime.Serialization: logboeken wanneer objecten worden gelezen of geschreven.
Cardspace.
U kunt elke traceringsbron configureren om dezelfde (gedeelde) listener te gebruiken, zoals aangegeven in het volgende configuratievoorbeeld.
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="CardSpace">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.IO.Log">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.Runtime.Serialization">
<listeners>
<add name="xml" />
</listeners>
</source>
<source name="System.IdentityModel">
<listeners>
<add name="xml" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\log\Traces.svclog" />
</sharedListeners>
</system.diagnostics>
</configuration>
Daarnaast kunt u door de gebruiker gedefinieerde traceringsbronnen toevoegen, zoals in het volgende voorbeeld wordt gedemonstreerd, om gebruikerscodetraceringen te verzenden.
<system.diagnostics>
<sources>
<source name="UserTraceSource" switchValue="Warning, ActivityTracing" >
<listeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\logs\UserTraces.svclog" />
</listeners>
</source>
</sources>
<trace autoflush="true" />
</system.diagnostics>
Zie Tracering uitbreiden voor meer informatie over het maken van door de gebruiker gedefinieerde traceringsbronnen.
Traceerlisteners configureren om traceringen te gebruiken
Tijdens runtime worden traceringsgegevens door WCF aan de listeners getraceerd, die de gegevens verwerken. WCF biedt verschillende vooraf gedefinieerde listeners voor System.Diagnostics, die verschillen in de indeling die ze gebruiken voor uitvoer. U kunt ook aangepaste listenertypen toevoegen.
U kunt de add
naam en het type traceerlistener opgeven die u wilt gebruiken. In onze voorbeeldconfiguratie hebben we de listener traceListener
benoemd en de standaard .NET Framework-traceerlistener (System.Diagnostics.XmlWriterTraceListener
) toegevoegd als het type dat we willen gebruiken. U kunt elk willekeurig aantal traceerlisteners voor elke bron toevoegen. Als de traceerlist de tracering naar een bestand verzendt, moet u de locatie en naam van het uitvoerbestand opgeven in het configuratiebestand. Dit wordt gedaan door de naam van het bestand voor die listener in te stellen initializeData
. Als u geen bestandsnaam opgeeft, wordt er een willekeurige bestandsnaam gegenereerd op basis van het gebruikte listenertype. Als XmlWriterTraceListener deze wordt gebruikt, wordt er een bestandsnaam zonder extensie gegenereerd. Als u een aangepaste listener implementeert, kunt u dit kenmerk ook gebruiken om andere initialisatiegegevens te ontvangen dan een bestandsnaam. U kunt bijvoorbeeld een database-id voor dit kenmerk opgeven.
U kunt een aangepaste traceringslistener configureren om traceringen op de kabel te verzenden, bijvoorbeeld naar een externe database. Als toepassings deployer moet u het juiste toegangsbeheer afdwingen voor de traceringslogboeken op de externe computer.
U kunt ook programmatisch een traceerlistener configureren. Zie Voor meer informatie : Tracelisteners maken en initialiseren en een aangepaste TraceListener maken.
Let op
Omdat System.Diagnostics.XmlWriterTraceListener
dit niet thread-veilig is, kan de traceringsbron resources exclusief vergrendelen bij het uitvoeren van traceringen. Wanneer veel threads traceringen uitvoeren naar een traceringsbron die is geconfigureerd voor het gebruik van deze listener, kan er sprake zijn van resourceconflicten, wat resulteert in een aanzienlijk prestatieprobleem. U kunt dit probleem oplossen door een aangepaste listener te implementeren die thread-safe is.
Traceerniveau
Het traceringsniveau wordt bepaald door de switchValue
instelling van de traceringsbron. De beschikbare traceringsniveaus worden beschreven in de volgende tabel.
Traceerniveau | Aard van de bijgehouden gebeurtenissen | Inhoud van de bijgehouden gebeurtenissen | Bijgehouden gebeurtenissen | Gebruikersdoel |
---|---|---|---|---|
Uit | N.v.t. | N.v.t. | Er worden geen traceringen verzonden. | N.v.t. |
Kritiek | "Negatieve" gebeurtenissen: gebeurtenissen die duiden op een onverwachte verwerking of een foutvoorwaarde. | Niet-verwerkte uitzonderingen, waaronder de volgende, worden vastgelegd: - OutOfMemoryException - ThreadAbortException (de CLR roept threadAbortExceptionHandler aan) - StackOverflowException (kan niet worden gevangen) - ConfigurationErrorsException - SEHException - Fouten bij het starten van toepassingen - Failfast-gebeurtenissen - Systeem loopt vast - Gifberichten: berichttraceringen die ervoor zorgen dat de toepassing mislukt. |
Beheerders Toepassingsontwikkelaars |
|
Error | "Negatieve" gebeurtenissen: gebeurtenissen die duiden op een onverwachte verwerking of een foutvoorwaarde. | Onverwachte verwerking is gebeurd. De toepassing kan een taak niet uitvoeren zoals verwacht. De toepassing is echter nog steeds actief. | Alle uitzonderingen worden vastgelegd. | Beheerders Toepassingsontwikkelaars |
Waarschuwing | "Negatieve" gebeurtenissen: gebeurtenissen die duiden op een onverwachte verwerking of een foutvoorwaarde. | Er is een mogelijk probleem opgetreden of kan zich voordoen, maar de toepassing werkt nog steeds correct. Het werkt mogelijk echter niet goed. | - De toepassing ontvangt meer aanvragen dan de beperkingsinstellingen toestaan. - De ontvangende wachtrij bevindt zich in de buurt van de maximaal geconfigureerde capaciteit. - Time-out is overschreden. - Referenties worden geweigerd. |
Beheerders Toepassingsontwikkelaars |
Gegevens | 'Positieve' gebeurtenissen: gebeurtenissen die geslaagde mijlpalen markeren | Belangrijke en succesvolle mijlpalen van de uitvoering van de toepassing, ongeacht of de toepassing goed werkt of niet. | In het algemeen worden berichten die nuttig zijn voor het bewaken en diagnosticeren van de systeemstatus, het meten van prestaties of profilering gegenereerd. U kunt dergelijke informatie gebruiken voor capaciteitsplanning en prestatiebeheer: - Kanalen worden gemaakt. - Eindpuntlisteners worden gemaakt. - Bericht voert vervoer binnen/verlaat. - Beveiligingstoken wordt opgehaald. - Configuratie-instelling wordt gelezen. |
Beheerders Toepassingsontwikkelaars Productontwikkelaars. |
Uitgebreid | 'Positieve' gebeurtenissen: gebeurtenissen die geslaagde mijlpalen markeren. | Gebeurtenissen op laag niveau voor zowel gebruikerscode als onderhoud worden verzonden. | Over het algemeen kunt u dit niveau gebruiken voor foutopsporing of toepassingsoptimalisatie. - Berichtkop begrepen. |
Beheerders Toepassingsontwikkelaars Productontwikkelaars. |
ActivityTracing | Stroomgebeurtenissen tussen verwerkingsactiviteiten en onderdelen. | Op dit niveau kunnen beheerders en ontwikkelaars toepassingen correleren in hetzelfde toepassingsdomein: - Traceringen voor activiteitsgrenzen, zoals starten/stoppen. - Traceringen voor overdrachten. |
Alle | |
Alle | De toepassing werkt mogelijk goed. Alle gebeurtenissen worden verzonden. | Alle vorige gebeurtenissen. | Alle |
De niveaus van Uitgebreid naar Kritiek worden op elkaar gestapeld, dat wil zeggen dat elk traceringsniveau alle niveaus erboven bevat, behalve het Off-niveau. Een listener die luistert op waarschuwingsniveau ontvangt bijvoorbeeld kritieke, fout- en waarschuwingstraceringen. Het niveau Alle omvat gebeurtenissen van uitgebreid tot kritieke en activiteitentraceringsevenementen.
Let op
De niveaus Informatie, Uitgebreid en ActivityTracing genereren een groot aantal traceringen, wat een negatieve invloed kan hebben op de doorvoer van berichten als u alle beschikbare resources op de computer hebt gebruikt.
Activiteitstracering en doorgifte configureren voor correlatie
De activityTracing
opgegeven waarde voor het switchValue
kenmerk wordt gebruikt om activiteitentracering in te schakelen, waarmee traceringen worden verzonden voor activiteitsgrenzen en overdrachten binnen eindpunten.
Notitie
Wanneer u bepaalde uitbreidbaarheidsfuncties in WCF gebruikt, krijgt u mogelijk een NullReferenceException functie wanneer activiteitstracering is ingeschakeld. Als u dit probleem wilt oplossen, controleert u het configuratiebestand van uw toepassing en zorgt u ervoor dat het switchValue
kenmerk voor uw traceringsbron niet is ingesteld activityTracing
op.
Het propagateActivity
kenmerk geeft aan of de activiteit moet worden doorgegeven aan andere eindpunten die deelnemen aan de berichtuitwisseling. Door deze waarde in te true
stellen, kunt u traceringsbestanden die door twee eindpunten worden gegenereerd, overnemen en zien hoe een set traceringen op het ene eindpunt naar een set traceringen op een ander eindpunt is gestroomd.
Zie Doorgifte voor meer informatie over het traceren en doorgeven van activiteiten.
ActivityTracing
Zowel propagateActivity
als Booleaanse waarden zijn van toepassing op system.ServiceModel TraceSource. De ActivityTracing
waarde is ook van toepassing op een traceringsbron, inclusief WCF of door de gebruiker gedefinieerde bron.
U kunt het kenmerk niet gebruiken met door de propagateActivity
gebruiker gedefinieerde traceringsbronnen. Voor het doorgeven van activiteits-id's van gebruikerscode moet u ServiceModel niet instellen, terwijl het kenmerk ServiceModel ActivityTracing
propagateActivity
nog steeds is ingesteld true
op .