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