Megosztás a következőn keresztül:


Nyomkövetés konfigurálása

Ez a témakör azt ismerteti, hogyan engedélyezheti a nyomkövetést, hogyan konfigurálhatja a nyomkövetési forrásokat nyomkövetések kibocsátására és nyomkövetési szintek beállítására, hogyan állíthatja be a tevékenységkövetést és a propagálást a teljes körű nyomkövetési korreláció támogatásához, és hogyan állíthatja be a nyomkövetési figyelőket a nyomkövetések elérésére.

Az éles környezetben vagy hibakeresési környezetben a nyomkövetési beállításokra vonatkozó javaslatokért tekintse meg a nyomkövetési és üzenetnaplózási ajánlott Gépház.

Fontos

Windows 8 rendszeren rendszergazda jogon kell futtatnia az alkalmazást (futtatás Rendszergazda istratorként), hogy az alkalmazás nyomkövetési naplókat hozhasson létre.

Nyomkövetés engedélyezése

A Windows Communication Foundation (WCF) a következő adatokat adja ki a diagnosztikai nyomkövetéshez:

  • A folyamat mérföldköveinek nyomon követése az alkalmazások összes összetevőjére, például a műveleti hívásokra, a kód kivételekre, a figyelmeztetésekre és más jelentős feldolgozási eseményekre.

  • Windows hibaesemények, amikor a nyomkövetési funkció hibásan működik. Lásd: Eseménynaplózás.

A WCF-nyomkövetés a .System.Diagnostics A nyomkövetés használatához nyomkövetési forrásokat kell definiálnia a konfigurációs fájlban vagy a kódban. A WCF minden WCF-szerelvényhez meghatároz egy nyomkövetési forrást. A System.ServiceModel nyomkövetési forrás a legeláldozottabb WCF-nyomkövetési forrás, és rögzíti a WCF kommunikációs verem mérföldköveit, az átvitel be- és elhagyásától a felhasználói kód beírásán/elhagyásán át. A System.ServiceModel.MessageLogging nyomkövetési forrás rögzíti a rendszeren áthaladó összes üzenetet.

A nyomkövetés alapértelmezés szerint nincs engedélyezve. A nyomkövetés aktiválásához létre kell hoznia egy nyomkövetési figyelőt, és be kell állítania a konfigurációban kiválasztott nyomkövetési forráshoz tartozó "Ki" értéken kívüli nyomkövetési szintet; ellenkező esetben a WCF nem hoz létre nyomkövetést. Ha nem ad meg figyelőt, a nyomkövetés automatikusan le lesz tiltva. Ha egy figyelő van definiálva, de nincs megadva szint, a szint alapértelmezés szerint "Kikapcsolva" értékre van állítva, ami azt jelenti, hogy nincs nyomkövetés.

Ha WCF bővíthetőségi pontokat, például egyéni műveletindítókat használ, saját nyomkövetést kell kibocsáta. Ennek az az oka, hogy ha bővíthetőségi pontot implementál, a WCF már nem tudja kibocsátania a szabványos nyomkövetéseket az alapértelmezett elérési úton. Ha nem valósít meg manuális nyomkövetési támogatást nyomkövetések kibocsátásával, előfordulhat, hogy nem látja a várt nyomkövetéseket.

A nyomkövetést az alkalmazás konfigurációs fájljának szerkesztésével konfigurálhatja – webalapú alkalmazások web.konfigurációja vagy Appname.exe.config a saját üzemeltetésű alkalmazásokhoz. Az alábbiakban egy példa látható az ilyen szerkesztésre. Ezekről a beállításokról a "Nyomkövetési figyelők konfigurálása nyomkövetések felhasználására" című szakaszban talál további információt.

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

Feljegyzés

Ha szerkeszteni szeretné egy WCF-szolgáltatásprojekt konfigurációs fájlját a Visual Studióban, kattintson a jobb gombbal az alkalmazás konfigurációs fájljára – webalapú alkalmazások web.konfigurációja vagy Appname.exe.config a saját üzemeltetésű alkalmazásokhoz a Megoldáskezelő. Ezután válassza a WCF-konfiguráció szerkesztése helyi menüelemet. Ezzel elindítja a Konfigurációszerkesztő eszközt (SvcConfigEditor.exe), amellyel grafikus felhasználói felületen módosíthatja a WCF-szolgáltatások konfigurációs beállításait.

Nyomkövetési források konfigurálása nyomkövetések kibocsátására

A WCF minden egyes szerelvényhez meghatároz egy nyomkövetési forrást. A szerelvényben létrehozott nyomkövetéseket az adott forráshoz definiált figyelők érik el. A következő nyomkövetési források vannak definiálva:

  • System.ServiceModel: Naplózza a WCF-feldolgozás minden fázisát, amikor a konfiguráció be van olvasva, az üzenetek feldolgozása átvitel, biztonsági feldolgozás, üzenet küldése felhasználói kódban stb.

  • System.ServiceModel.MessageLogging: Naplózza a rendszeren áthaladó összes üzenetet.

  • System.IdentityModel.

  • System.ServiceModel.Activation.

  • System.IO.Log: A .NET-keretrendszer felület naplózása a Common Log File System (CLFS) szolgáltatáshoz.

  • System.Runtime.Szerializálás: Naplók, amikor az objektumok olvasása vagy írása történik.

  • Cardspace.

Az egyes nyomkövetési forrásokat konfigurálhatja úgy, hogy ugyanazt a (megosztott) figyelőt használják, ahogyan az a következő konfigurációs példában is látható.

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

Emellett hozzáadhat felhasználó által definiált nyomkövetési forrásokat, amint azt az alábbi példa is mutatja, felhasználói kódkövetések kibocsátásához.

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

A felhasználó által definiált nyomkövetési források létrehozásáról további információt a Nyomkövetés kiterjesztése című témakörben talál.

Nyomkövetési figyelők konfigurálása nyomkövetések felhasználására

Futásidőben a WCF nyomkövetési adatokat továbbít a figyelőknek, amelyek feldolgozzák az adatokat. A WCF számos előre definiált figyelőt System.Diagnosticsbiztosít, amelyek formátuma eltér a kimenethez használt formátumtól. Egyéni figyelőtípusokat is hozzáadhat.

Megadhatja add a használni kívánt nyomkövetési figyelő nevét és típusát. A példakonfigurációban elneveztük a figyelőttraceListener, és hozzáadtuk a szabványos .NET-keretrendszer nyomkövetési figyelőt (System.Diagnostics.XmlWriterTraceListener) a használni kívánt típushoz. Az egyes forrásokhoz tetszőleges számú nyomkövetési figyelőt adhat hozzá. Ha a nyomkövetési figyelő egy fájlhoz bocsátja ki a nyomkövetést, meg kell adnia a kimeneti fájl helyét és nevét a konfigurációs fájlban. Ez úgy történik, hogy a figyelő fájljának nevére van állítva initializeData . Ha nem ad meg fájlnevet, a rendszer véletlenszerű fájlnevet hoz létre a használt figyelőtípus alapján. Ha XmlWriterTraceListener ezt használja, létrejön egy kiterjesztés nélküli fájlnév. Ha egyéni figyelőt implementál, ezzel az attribútummal a fájlnévtől eltérő inicializálási adatokat is fogadhat. Megadhat például egy adatbázis-azonosítót ehhez az attribútumhoz.

Konfigurálhat egy egyéni nyomkövetési figyelőt, hogy nyomkövetéseket küldjön a vezetéken, például egy távoli adatbázisba. Alkalmazás-üzembe helyezőként a távoli gépen a nyomkövetési naplók megfelelő hozzáférés-vezérlését kell kikényszerítenie.

A nyomkövetési figyelőt programozott módon is konfigurálhatja. További információ : Nyomkövetési figyelők létrehozása és inicializálása és egyéni TraceListener létrehozása.

Figyelemfelhívás

Mivel System.Diagnostics.XmlWriterTraceListener a nyomkövetési forrás nem szálbiztos, a nyomkövetési forrás kizárólag a nyomkövetések kimenetekor zárolhatja az erőforrásokat. Ha sok szál a figyelő használatára konfigurált nyomkövetési forrásra mutat, erőforrás-versengés fordulhat elő, ami jelentős teljesítményproblémát eredményez. A probléma megoldásához egy szálbiztos egyéni figyelőt kell implementálnia.

Nyomkövetési szint

A nyomkövetési szintet a switchValue nyomkövetési forrás beállítása szabályozza. Az elérhető nyomkövetési szinteket az alábbi táblázat ismerteti.

Nyomkövetési szint A nyomon követett események jellege A nyomon követett események tartalma Nyomon követett események Felhasználói cél
Kikapcsolva N.A. N.A. A rendszer nem bocsát ki nyomokat. n/a
Kritikus "Negatív" események: váratlan feldolgozást vagy hibafeltételt jelző események. A rendszer nem kezelt kivételeket, köztük a következőket naplózza:

- OutOfMemoryException
- ThreadAbortException (a CLR meghívja a ThreadAbortExceptionHandlert)
- StackOverflowException (nem fogott)
- ConfigurationErrorsException
- Standard kiadás HException
– Alkalmazásindítási hibák
- Feladat-előzemények
- A rendszer lefagy
- Méregüzenetek: az alkalmazás sikertelenségéhez kapcsolódó üzenetkövetések.
Rendszergazdák

Alkalmazásfejlesztők
Hiba "Negatív" események: váratlan feldolgozást vagy hibafeltételt jelző események. Váratlan feldolgozás történt. Az alkalmazás nem tudta a várt módon végrehajtani a feladatot. Az alkalmazás azonban továbbra is működik. A rendszer minden kivételt naplóz. Rendszergazdák

Alkalmazásfejlesztők
Figyelmeztetés "Negatív" események: váratlan feldolgozást vagy hibafeltételt jelző események. Lehetséges probléma lépett fel vagy fordulhat elő, de az alkalmazás továbbra is megfelelően működik. Előfordulhat azonban, hogy nem működik megfelelően. – Az alkalmazás több kérést kap, mint amennyit a szabályozási beállítások megengednek.
– A fogadó üzenetsor a maximális konfigurált kapacitás közelében van.
- Túllépte az időtúllépést.
- A hitelesítő adatok elutasítva.
Rendszergazdák

Alkalmazásfejlesztők
Tájékoztatás "Pozitív" események: sikeres mérföldköveket jelző események Az alkalmazás végrehajtásának fontos és sikeres mérföldkövei, függetlenül attól, hogy az alkalmazás megfelelően működik-e vagy sem. Általában a rendszer állapotának monitorozásához és diagnosztizálására, a teljesítmény méréséhez vagy a profilkészítéshez hasznos üzenetek jönnek létre. Ezeket az információkat a kapacitástervezéshez és a teljesítménykezeléshez használhatja:

- A csatornák létrejönnek.
– Végpontfigyelők jönnek létre.
- Az üzenet be- vagy kilép az átvitelből.
- A rendszer lekéri a biztonsági jogkivonatot.
– A konfigurációs beállítás be van olvasva.
Rendszergazdák

Alkalmazásfejlesztők

Termékfejlesztők.
Részletezés "Pozitív" események: sikeres mérföldköveket jelző események. A rendszer a felhasználói kód és a karbantartás alacsony szintű eseményeit is kibocsátja. Ezt a szintet általában hibakereséshez vagy alkalmazásoptimalizáláshoz használhatja.

- Megértett üzenetfejléc.
Rendszergazdák

Alkalmazásfejlesztők

Termékfejlesztők.
ActivityTracing Folyamatesemények a feldolgozási tevékenységek és összetevők között. Ez a szint lehetővé teszi a rendszergazdák és fejlesztők számára, hogy azonos alkalmazástartományban lévő alkalmazásokat korreláljanak:

- Tevékenységhatárok nyomkövetése, például indítás/leállítás.
- Nyomkövetések átvitelekhez.
Mind
Mind Az alkalmazás megfelelően működhet. Minden esemény ki lesz bocsátva. Minden korábbi esemény. Mind

A részletestől a kritikusig lévő szintek egymásra vannak halmozva, vagyis minden nyomkövetési szint a felette lévő összes szintet tartalmazza a Ki szint kivételével. A figyelmeztetési szinten figyelő figyelők például kritikus, hiba- és figyelmeztetési nyomkövetéseket kapnak. A Minden szint a részletestől a kritikus és a tevékenységkövetési eseményekig tartalmazza az eseményeket.

Figyelemfelhívás

Az Information, a Verbose és az ActivityTracing szintek sok nyomkövetést hoznak létre, ami negatív hatással lehet az üzenetek átviteli sebességére, ha felhasználta az összes rendelkezésre álló erőforrást a gépen.

Tevékenységkövetés és -propagálás konfigurálása korrelációhoz

Az activityTracing attribútumhoz switchValue megadott érték a tevékenység nyomkövetésének engedélyezésére szolgál, amely nyomkövetést bocsát ki a tevékenységhatárokhoz és a végpontokon belüli átvitelekhez.

Feljegyzés

Ha bizonyos bővíthetőségi funkciókat használ a WCF-ben, előfordulhat NullReferenceException , hogy a tevékenységkövetés engedélyezve van. A probléma megoldásához ellenőrizze az alkalmazás konfigurációs fájlját, és győződjön meg arról, hogy a switchValue nyomkövetési forrás attribútuma nincs beállítva activityTracing.

Az propagateActivity attribútum azt jelzi, hogy a tevékenységet propagálja-e más végpontokra, amelyek részt vesznek az üzenetcserében. Ennek az értéknek truea beállításával bármelyik két végpont által létrehozott nyomkövetési fájlokat használhatja, és megfigyelheti, hogy az egyik végponton lévő nyomkövetési csoportok hogyan haladtak át egy másik végponton lévő nyomkövetési csoportokba.

A tevékenységek nyomon követéséről és propagálásáról további információt a Propagálás című témakörben talál.

Mind propagateActivity a ActivityTracing logikai értékek a System.ServiceModel TraceSource-ra vonatkoznak. Az ActivityTracing érték minden nyomkövetési forrásra vonatkozik, beleértve a WCF-et vagy a felhasználó által definiáltakat is.

Az attribútum nem használható propagateActivity felhasználó által definiált nyomkövetési forrásokkal. A felhasználói kód tevékenységazonosítójának propagálásához győződjön meg arról, hogy nem állítja be a ServiceModelt ActivityTracing, miközben a ServiceModel propagateActivity attribútuma továbbra is a következőre truevan állítva.

Lásd még