Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 true
a 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.