Diagnostická trasování

Trasování jsou publikování určitých zpráv, které jsou generovány během spuštění aplikace. Při použití trasování, musí mít mechanismus pro shromažďování a zaznamenávání zpráv, které jsou odeslány. Trasovací zprávy jsou přijímány naslouchací procesy. Účelem tohoto naslouchací proces je shromažďování, ukládání a směrovat trasovací zprávy. Posluchači přímý výstup trasování příslušný cíli, jako je protokol, okno nebo textový soubor.

Jeden takový naslouchací proces DefaultTraceListener, je automaticky vytvořen a inicializován při zapnutém trasování. Pokud chcete výstup trasování k přesměrováni na jakékoli další zdroje, musíte vytvořit a inicializovat naslouchací procesy další trasování. Naslouchací procesy, které vytvoříte by měla odpovídat vašim potřebám. Například můžete text záznam všech výstupu trasování. V takovém případě by vytvořit naslouchací proces, který bylo zapsáno veškerá výstupní data do nového textového souboru, pokud povolena. Na druhé straně může být pouze chcete zobrazit výstup při spuštění aplikace. V takovém případě můžete vytvořit naslouchací proces, který řízené všechny výstup do okna konzoly. EventLogTraceListener Může směrovat výstup trasování do protokolu událostí a TextWriterTraceListener může zapisovat výstup trasování do datového proudu.

Povolení trasování

Chcete-li povolit trasování během zpracování transakcí, měli byste upravit konfigurační soubor vaší aplikace. Například:

<configuration>  
<system.diagnostics>  
     <sources>  
          <source name="System.Transactions" switchValue="Warning">  
               <listeners>  
                    <add name="tx"
                     type="System.Diagnostics.XmlWriterTraceListener"
                     initializeData= "tx.log" />  
               </listeners>  
          </source>  
     </sources>  
</system.diagnostics>  
</configuration>  

System.Transactions trasování se zapisuje do zdroje s názvem System.Transactions. Můžete použít add Chcete-li určit název a typ naslouchací proces trasování, kterou chcete použít. V konfiguraci našeho příkladu jsme s názvem "tx" naslouchací proces a přidat standardní naslouchací proces trasování rozhraní .NET Framework (XmlWriterTraceListener) jako typ chceme použít. Použití initializeData nastavit název souboru protokolu pro tuto naslouchací proces. Kromě toho můžete nahradit úplná cesta k souboru jednoduchý název.

Každý typ zprávy trasování je přiřazena úroveň označuje její stupeň závažnosti. Úroveň trasování app domény je rovna nebo nižší než úroveň typu události, je vygenerována tuto zprávu. Úroveň trasování řídí switchValue nastavení v konfiguračním souboru. Úrovně, které jsou přidruženy k diagnostiky trasovací zprávy jsou definovány v následující tabulce.

Úroveň trasování Popis
Kritické Došlo k závažné chyby, jako je následující:

– Chyba, která může způsobit okamžitou ztrátu funkčnosti uživatele.
– Událost, která vyžaduje, aby správce podnikl akci, aby se zabránilo ztrátě funkčnosti.
- Kód přestane reagovat.
– Tato úroveň trasování může také poskytnout dostatečný kontext pro interpretaci dalších kritických trasování. To vám mohou pomoci identifikovat sekvence operací, což vedlo k závažné chybě.
Chyba Došlo k chybě (například neplatná konfigurace nebo v síti chování) může vést ke ztrátě funkčnosti uživatele.
Upozorňující Existuje podmínka, který lze následně vést k chybě nebo kritické chyby (například přidělení nedaří nebo blíží k omezení). Normální zpracování chyb z uživatelského kódu (například transakce byla přerušena, časové limity, ověření se nezdařilo) můžete také generovat upozornění.
Informační Zprávy, které jsou užitečné pro sledování a diagnostiku stavu systému, měření výkonu nebo profilování jsou generovány. Ty mohou zahrnovat transakce a zařazení životnost události, například transakcí vytváření nebo potvrzené překračování významné hranice nebo přidělování významných zdrojů. Vývojáři mohou využít pak tyto informace pro správu výkon a plánování kapacity.

Trasovací kódy

V následující tabulce jsou uvedeny kódy trasování, které jsou generovány System.Transactions infrastruktury. Součástí tabulky jsou identifikátor trasovací kód, EventType úroveň výčtu pro trasování a další data obsažená v záznamu TraceRecord pro trasování. Kromě toho je odpovídající úroveň trasování trasování také uložena v záznamu TraceRecord.

TraceCode Typ události Doplňující data v TraceRecord
TransactionCreated Informace TransactionTraceId
TransactionPromoted Informace Místní TransactionTraceId distribuované TransactionTraceId
EnlistmentCreated Informace TransactionTraceId, EnlistmentTraceId, EnlistmentType (spotřeby volatile), EnlistmentOptions
EnlistmentCallbackNegative Upozorňující TransactionTraceId, EnlistmentTraceId,

Zpětné volání (forcerollback/bylo přerušeno/indoubt)
TransactionRollbackCalled Upozorňující TransactionTraceId
TransactionAborted Upozorňující TransactionTraceId
TransactionInDoubt Upozorňující TransactionTraceId
TransactionScopeCreated Informace TransactionScopeResult, což může být následující:

- Nová transakce.
- Transakce byla předána.
- Byla předána závislá transakce.
- Použití aktuální transakce.
- Žádná transakce.

nové aktuální TransactionTraceId
TransactionScopeDisposed Informace TransactionTraceId "očekávané" aktuální transakce oboru.
TransactionScopeIncomplete Upozorňující TransactionTraceId "očekávané" aktuální transakce oboru.
TransactionScopeNestedIncorrectly Upozorňující TransactionTraceId "očekávané" aktuální transakce oboru.
TransactionScopeCurrentTransactionChanged Upozorňující Původní aktuální TransactionTraceId ostatní TransactionTraceId
TransactionScopeTimeout Upozorňující TransactionTraceId "očekávané" aktuální transakce oboru.
DependentCloneCreated Informace TransactionTraceId typ závislé transakce vytvořen (RollbackIfNotComplete/BlockCommitUntilComplete)
DependentCloneComplete Informace TransactionTraceId
RecoveryComplete Informace Identifikátor GUID správce prostředků (z base)
Reenlist Informace Identifikátor GUID správce prostředků (z base)
TransactionSerialized Informace TransactionTraceId.
TransactionException Chyba Zpráva o výjimce
InvalidOperationException Chyba Zpráva o výjimce
InternalError Kritické Zpráva o výjimce
TransferEvent Pokud je transakcí deserializovat, nebo povýšen z System.Transactions transakce distribuované jeden, jsou zapsány aktuální ID činnosti z kontextu ExecutionContext a ID distribuované transakce.

Když ovládacího prvku návrhu volá zpět do spravovaného kódu, ID distribuované transakce je nastaven jako ID činnosti v kontextu ExecutionContext po dobu trvání zpětného volání.
ConfiguredDefaultTimeoutAdjusted Upozorňující Žádná další data
Vlastnost TransactionTimeout Upozorňující TransactionTraceId transakce časový limit vypršel.

Schématu XML pro všechny předchozí položky doplňující data má následující formát.

TransactionTraceIdentifier

<TransactionTraceIdentifier>

<TransactionIdentifier >

string representation of transaction id

</TransactionIdentifier>

< CloneIdentifier >

the clone id number

</CloneIdentifier>

</TransactionTraceIdentifier>

EnlistmentTraceIdentifier

<EnlistmentTraceIdentifier>

<ResourceManagerId>

string form of guid

</ResourceManagerId>

<TransactionTraceIdentifier>

<TransactionIdentifier >

string representation of transaction id

</TransactionIdentifier>

<CloneIdentifier >

the clone id number

</CloneIdentifier>

<TransactionTraceIdentifier>

<EnlistmentIdentifier>

the enlistment id number

</EnlistmentIdentifier>

</EnlistmentTraceIdentifier>

Identifikátor správce prostředků

<ResourceManagerId>

string form of guid

</ResourceManagerId>

Potíže se zabezpečením pro trasování

Když jako správce zapnete trasování, můžou se citlivé informace zapisovat do protokolu trasování, který je ve výchozím nastavení veřejně zobrazitelný. Pokud chcete zmírnit případné bezpečnostní hrozby, měli byste zvážit uložení protokolu trasování do zabezpečeného umístění řízeného oprávněními pro přístup ke sdílené složce a systému souborů.