Delen via


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.

Raadpleeg Aanbevolen Instellingen voor tracering en berichtregistratie voor aanbevelingen in de productie- of foutopsporingsomgeving.

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

Het propagateActivity kenmerk geeft aan of de activiteit moet worden doorgegeven aan andere eindpunten die deelnemen aan de berichtuitwisseling. Door deze waarde in te truestellen, 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 ActivityTracingpropagateActivity nog steeds is ingesteld trueop .

Zie ook