Dela via


Konfigurera spårning

Det här avsnittet beskriver hur du kan aktivera spårning, konfigurera spårningskällor för att generera spårningar och ange spårningsnivåer, ange aktivitetsspårning och spridning för att stödja spårningskorrelation från slutpunkt till slutpunkt och ange spårningslyssnare för åtkomst till spårningar.

Rekommendationer för spårningsinställningar i produktions- eller felsökningsmiljön finns i Rekommenderade Inställningar för spårning och meddelandeloggning.

Viktigt!

I Windows 8 måste du köra programmet förhöjt (Kör som administratör) för att programmet ska kunna generera spårningsloggar.

Aktivera spårning

Windows Communication Foundation (WCF) matar ut följande data för diagnostisk spårning:

  • Spårningar för processmilstolpar för alla komponenter i programmen, till exempel åtgärdsanrop, kodfel, varningar och andra viktiga bearbetningshändelser.

  • Windows-felhändelser när spårningsfunktionen inte fungerar. Se Händelseloggning.

WCF-spårning bygger på System.Diagnostics. Om du vill använda spårning bör du definiera spårningskällor i konfigurationsfilen eller i koden. WCF definierar en spårningskälla för varje WCF-sammansättning. Spårningskällan System.ServiceModel är den mest allmänna WCF-spårningskällan och registrerar bearbetning av milstolpar i WCF-kommunikationsstacken, från att ange/lämna transport till att ange/lämna användarkod. Spårningskällan System.ServiceModel.MessageLogging registrerar alla meddelanden som flödar genom systemet.

Spårning är inte aktiverat som standard. För att aktivera spårning måste du skapa en spårningslyssnare och ange en annan spårningsnivå än "Av" för den valda spårningskällan i konfigurationen. annars genererar WCF inga spårningar. Om du inte anger någon lyssnare inaktiveras spårning automatiskt. Om en lyssnare har definierats, men ingen nivå har angetts, är nivån inställd på "Av" som standard, vilket innebär att ingen spårning genereras.

Om du använder WCF-utökningspunkter, till exempel anpassade åtgärdsanropare, bör du generera egna spårningar. Det beror på att om du implementerar en utökningspunkt kan WCF inte längre generera standardspårningarna i standardsökvägen. Om du inte implementerar stöd för manuell spårning genom att generera spårningar kanske du inte ser de spårningar du förväntar dig.

Du kan konfigurera spårning genom att redigera programmets konfigurationsfil, antingen Web.config för webbaserade program eller Appname.exe.config för program med egen värd. Följande är ett exempel på en sådan redigering. Mer information om de här inställningarna finns i avsnittet "Konfigurera spårningslyssnare för att använda spårningar".

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

Kommentar

Om du vill redigera konfigurationsfilen för ett WCF-tjänstprojekt i Visual Studio högerklickar du på programmets konfigurationsfil, antingen Web.config för webbaserade program eller Appname.exe.config för program med egen värd i Solution Explorer. Välj sedan snabbmenyalternativet Redigera WCF-konfiguration . Detta startar konfigurationsredigeraren (SvcConfigEditor.exe) som gör att du kan ändra konfigurationsinställningarna för WCF-tjänster med hjälp av ett grafiskt användargränssnitt.

Konfigurera spårningskällor för att generera spårningar

WCF definierar en spårningskälla för varje sammansättning. Spårningar som genereras i en sammansättning nås av lyssnarna som definierats för den källan. Följande spårningskällor definieras:

  • System.ServiceModel: Loggar alla steg i WCF-bearbetningen, när konfigurationen läss bearbetas ett meddelande i transport, säkerhetsbearbetning, ett meddelande skickas i användarkod och så vidare.

  • System.ServiceModel.MessageLogging: Loggar alla meddelanden som flödar genom systemet.

  • System.IdentityModel.

  • System.ServiceModel.Activation.

  • System.IO.Log: Loggning för .NET Framework-gränssnittet till CLFS (Common Log File System).

  • System.Runtime.Serialization: Loggar när objekt läs- eller skrivs.

  • Cardspace.

Du kan konfigurera varje spårningskälla att använda samma (delade) lyssnare, enligt följande konfigurationsexempel.

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

Dessutom kan du lägga till användardefinierade spårningskällor, vilket visas i följande exempel, för att generera spårningar av användarkod.

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

Mer information om hur du skapar användardefinierade spårningskällor finns i Utöka spårning.

Konfigurera spårningslyssnare för att använda spårningar

Vid körning matar WCF spårningsdata till lyssnarna, som bearbetar data. WCF tillhandahåller flera fördefinierade lyssnare för System.Diagnostics, som skiljer sig åt i det format som de använder för utdata. Du kan också lägga till anpassade lyssnartyper.

Du kan använda add för att ange namnet och typen av spårningslyssnare som du vill använda. I vår exempelkonfiguration gav vi lyssnaren traceListener namnet och lade till standardspårningslyssnaren för .NET Framework (System.Diagnostics.XmlWriterTraceListener) som den typ vi vill använda. Du kan lägga till valfritt antal spårningslyssnare för varje källa. Om spårningslyssnaren skickar spårningen till en fil måste du ange platsen för utdatafilen och namnet i konfigurationsfilen. Detta görs genom att ange initializeData namnet på filen för lyssnaren. Om du inte anger något filnamn genereras ett slumpmässigt filnamn baserat på vilken lyssnartyp som används. Om XmlWriterTraceListener används genereras ett filnamn utan tillägg. Om du implementerar en anpassad lyssnare kan du också använda det här attributet för att ta emot andra initieringsdata än ett filnamn. Du kan till exempel ange en databasidentifierare för det här attributet.

Du kan konfigurera en anpassad spårningslyssnare för att skicka spårningar på kabeln, till exempel till en fjärrdatabas. Som programdistribuerare bör du framtvinga korrekt åtkomstkontroll i spårningsloggarna på fjärrdatorn.

Du kan också konfigurera en spårningslyssnare programmatiskt. Mer information finns i How to: Create and Initialize Trace Listeners and Creating a Custom TraceListener (Skapa och initiera spårningslyssnare ) och Skapa en anpassad TraceListener.

Varning

Eftersom System.Diagnostics.XmlWriterTraceListener det inte är trådsäkert kan spårningskällan låsa resurser exklusivt när spårningar matas ut. När många trådar matar ut spårningar till en spårningskälla som konfigurerats för att använda den här lyssnaren kan resurskonkurrens uppstå, vilket resulterar i ett betydande prestandaproblem. För att lösa det här problemet bör du implementera en anpassad lyssnare som är trådsäker.

Spårningsnivå

Spårningsnivån styrs av switchValue inställningen för spårningskällan. Tillgängliga spårningsnivåer beskrivs i följande tabell.

Spårningsnivå De spårade händelsernas natur Innehållet i de spårade händelserna Spårade händelser Användarmål
Av Saknas Saknas Inga spårningar genereras. Ej tillämpligt
Kritiskt "Negativa" händelser: händelser som indikerar en oväntad bearbetning eller ett feltillstånd. Ohanterade undantag inklusive följande loggas:

- OutOfMemoryException
– ThreadAbortException (CLR anropar alla ThreadAbortExceptionHandler)
- StackOverflowException (kan inte fångas)
– ConfigurationErrorsException
- SEHException
– Programstartfel
– Felsnabba händelser
- Systemet låser sig
– Giftmeddelanden: meddelandespårningar som gör att programmet misslyckas.
Administratörer

Programutvecklare
Fel "Negativa" händelser: händelser som indikerar en oväntad bearbetning eller ett feltillstånd. Oväntad bearbetning har inträffat. Programmet kunde inte utföra en uppgift som förväntat. Programmet är dock fortfarande igång. Alla undantag loggas. Administratörer

Programutvecklare
Varning "Negativa" händelser: händelser som indikerar en oväntad bearbetning eller ett feltillstånd. Ett möjligt problem har uppstått eller kan inträffa, men programmet fungerar fortfarande korrekt. Det kanske dock inte fortsätter att fungera korrekt. – Programmet tar emot fler begäranden än vad inställningarna för begränsning tillåter.
– Den mottagande kön är nära sin maximala konfigurerade kapacitet.
– Tidsgränsen har överskridits.
– Autentiseringsuppgifter avvisas.
Administratörer

Programutvecklare
Information "Positiva" händelser: händelser som markerar lyckade milstolpar Viktiga och lyckade milstolpar för programkörning, oavsett om programmet fungerar korrekt eller inte. I allmänhet genereras meddelanden som är användbara för att övervaka och diagnostisera systemstatus, mäta prestanda eller profilering. Du kan använda sådan information för kapacitetsplanering och prestandahantering:

– Kanaler skapas.
– Slutpunktslyssnare skapas.
– Meddelandet anger/lämnar transporten.
– Säkerhetstoken hämtas.
– Konfigurationsinställningen läse.
Administratörer

Programutvecklare

Produktutvecklare.
Utförlig "Positiva" händelser: händelser som markerar lyckade milstolpar. Händelser på låg nivå för både användarkod och service genereras. I allmänhet kan du använda den här nivån för felsökning eller programoptimering.

- Förstådd meddelanderubrik.
Administratörer

Programutvecklare

Produktutvecklare.
ActivityTracing Flödeshändelser mellan bearbetningsaktiviteter och komponenter. På den här nivån kan administratörer och utvecklare korrelera program i samma programdomän:

– Spårningar för aktivitetsgränser, till exempel start/stopp.
- Spårningar för överföringar.
Alla
Alla Programmet kan fungera korrekt. Alla händelser genereras. Alla tidigare händelser. Alla

Nivåerna från Verbose till Critical staplas ovanpå varandra, dvs. varje spårningsnivå innehåller alla nivåer ovanför den förutom Av-nivån. En lyssnare som lyssnar på varningsnivån tar till exempel emot spårningar av kritiskt, fel och varning. Nivån Alla innehåller händelser från utförliga till kritiska händelser och aktivitetsspårningshändelser.

Varning

Nivåerna Information, Verbose och ActivityTracing genererar många spårningar, vilket kan påverka meddelandets dataflöde negativt om du har förbrukat alla tillgängliga resurser på datorn.

Konfigurera aktivitetsspårning och spridning för korrelation

Värdet activityTracing som anges för attributet används för switchValue att aktivera aktivitetsspårning, vilket genererar spårningar för aktivitetsgränser och överföringar inom slutpunkter.

Kommentar

När du använder vissa utökningsfunktioner i WCF kan du få en NullReferenceException när aktivitetsspårning är aktiverad. Åtgärda problemet genom att kontrollera programmets konfigurationsfil och se till att switchValue attributet för spårningskällan inte är inställt på activityTracing.

Attributet propagateActivity anger om aktiviteten ska spridas till andra slutpunkter som deltar i meddelandeutbytet. Genom att ange det här värdet till truekan du ta spårningsfiler som genereras av två slutpunkter och se hur en uppsättning spårningar på en slutpunkt flödade till en uppsättning spårningar på en annan slutpunkt.

Mer information om aktivitetsspårning och spridning finns i Spridning.

Både propagateActivity och ActivityTracing booleska värden gäller för System.ServiceModel TraceSource. Värdet ActivityTracing gäller även för alla spårningskällor, inklusive WCF eller användardefinierade.

Du kan inte använda propagateActivity attributet med användardefinierade spårningskällor. För spridning av aktivitets-ID för användarkod kontrollerar du att du inte anger ServiceModel ActivityTracing, medan attributet ServiceModel propagateActivity fortfarande är inställt på true.

Se även