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 beállításokat.

Fontos

Windows 8 rendszeren rendszergazdai jogosultságúként kell futtatnia az alkalmazást ahhoz, hogy az alkalmazás nyomkövetési naplókat hozzon 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 tetejére épül. 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 legáltalánosabb 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- és elhagyásáig. 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 használ, például egyéni művelet-meghívókat, saját nyomkövetést kell kibocsátania. 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 – Web.config webalapú alkalmazásokhoz, vagy Appname.exe.config 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>  

Megjegyzé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 – Web.config webes alkalmazásokhoz, vagy Appname.exe.config saját üzemeltetésű alkalmazáshoz a Megoldáskezelőben. Ezután válassza a WCF-konfiguráció szerkesztése helyi menüelemet. Ezzel elindítja a Konfigurációszerkesztő eszközt (SvcConfigEditor.exe), amely lehetővé teszi a WCF-szolgáltatások konfigurációs beállításainak módosítását grafikus felhasználói felülettel.

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. Az összeállításban létrehozott nyomkövetéseket azok a figyelők érik el, amelyeket az adott forráshoz definiáltak. 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ének naplózása a Common Log File Systembe (CLFS).

  • 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 biztosít System.Diagnostics-hoz, amelyek különböznek a kimenet formátumában, amit használnak. Egyéni figyelőtípusokat is hozzáadhat.

A add eszközt használhatja a nyomkövetési figyelő nevének és típusának meghatározására. A példakonfigurációban elneveztük a figyelőt traceListener , é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. Ennek eléréséhez a initializeData be van állítva a figyelő fájljának nevére. 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óért lásd: Nyomkövetési figyelők létrehozása és inicializálása valamint Egyéni nyomkövetési figyelő létrehozása.

Figyelmeztetés

Mivel System.Diagnostics.XmlWriterTraceListener nem szálbiztos, ezért nyomkövetési forrás kizárólag a nyomkövetések kimenetekor zárolhatja az erőforrásokat. Amikor sok szál kimeneti nyomokat küld egy olyan nyomkövetési forrásra, amely a figyelő használatára van konfigurálva, erőforrás-összeütközé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 Nincs adat. Nincs adat. A rendszer nem bocsát ki nyomokat. Nincs adat.
Nélkülözhetetlen "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)
- KonfigurációsHibaKivétel
- SEHException
– Alkalmazásindítási hibák
- Gyorshiba események
- A rendszer lefagy
- Méregüzenetek: üzenetnaplók, amelyek az alkalmazás meghibásodását okozzák.
Adminisztrátorok

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. Adminisztrátorok

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.
- Az időkorlátot túllépték.
- A hitelesítő adatok elutasítva.
Adminisztrátorok

Alkalmazásfejlesztők
Információ "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 biztonsági token lekérésre kerül.
– A konfigurációs beállítás be van olvasva.
Adminisztrátorok

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.
Adminisztrátorok

Alkalmazásfejlesztők

Termékfejlesztők.
Tevékenység nyomon követése 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 átutalásokhoz.
Összes
Összes Az alkalmazás megfelelően működhet. Az összes esemény kiadásra kerül. Minden korábbi esemény. Összes

A Részletes-től a Kritikus-ig lévő nyomkövetési szintek egymásra vannak halmozva, vagyis minden nyomkövetési szint a felette lévő összes szintet tartalmazza a Ki szint kivételével. Például, aki figyelmeztetési szinten hallgat, kritikus, hibajelzési és figyelmeztetések nyomait kap. Az 'Összes' szint a szószátyártól a kritikusig terjedő és a tevékenységkövetési eseményeket tartalmazza.

Figyelmezteté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.

Megjegyzés:

Ha bizonyos bővíthetőségi funkciókat használ a WCF-ben, előfordulhat NullReferenceException, ha 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 propagateActivity attribútum nem használható a felhasználó által meghatározott 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 ServiceModel ActivityTracing attribútumot, miközben a ServiceModel propagateActivity attribútum továbbra is true-re van állítva.

Lásd még