Dane śledzenia diagnostycznego

Ślady to publikowanie określonych komunikatów generowanych podczas wykonywania aplikacji. Jeśli śledzenie, musi mieć mechanizm do gromadzenia i rejestrowania wiadomości, które mają być wysyłane. Przez odbiorniki odbierania komunikatów śledzenia. Odbiornik ma na celu zbierania, przechowywania i komunikatów śledzenia, które trasy. Odbiorniki bezpośrednie dane wyjściowe śledzenia do odpowiedniego obiektu docelowego, takie jak dziennik, okno lub PLiku tekstowego.

Jedno takie odbiornik DefaultTraceListener, jest automatycznie tworzone i inicjowana, gdy śledzenie jest włączone. Jeśli chcesz, aby dane wyjściowe śledzenia kierować do żadnych dodatkowych źródeł, należy utworzyć i zainicjować odbiorniki śledzenia dodatkowe. Odbiorniki, tworzonych powinny odzwierciedlać Twoich potrzeb. Na przykład może być potrzebny rekord tekstowy wszystkich danych wyjściowych śledzenia. W takim przypadku należy utworzyć odbiornik, który zapisano wszystkie dane wyjściowe w nowy PLik tekstowy, jeśli włączona. Z drugiej strony można wyświetlić dane wyjściowe tylko podczas wykonywania aplikacji. W takim przypadku można utworzyć odbiornik, który przekierowanie wszystkie dane wyjściowe do okna konsoli. EventLogTraceListener Można skierować dane wyjściowe śledzenia do dziennika zdarzeń, a właściwość TextWriterTraceListener może zapisywać dane wyjściowe śledzenia w strumieniu.

Włączenie debugowania

Aby umożliwić śledzenie podczas przetwarzania transakcji, należy edytować plik konfiguracji aplikacji. Poniżej przedstawiono przykład.

<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.Transactionszapisy są zapisywane w źródle o nazwie "System.Transactions". Można użyć add określić nazwę i typ odbiornik śledzenia ma być używany. W naszej przykładowej konfiguracji nazwaliśmy odbiornik "tx" i dodaliśmy standardowy odbiornik śledzenia programu .NET Framework (XmlWriterTraceListener) jako typ, którego chcemy użyć. Użyj initializeData do ustawienia dla tego odbiornika nazwa PLiku dziennika. Ponadto możesz zastąpić w pełni kwalifikowaną ścieżkę dla prostej nazwy pliku.

Poszczególne typy komunikatów śledzenia przypisano poziomu, aby wskazać jej stopień ważności. Jeśli poziom śledzenia domeny aPLikacji jest równa lub mniejsza niż poziom typu zdarzenia, generowany jest ten komunikat. Poziom śledzenia jest kontrolowane przez switchValue ustawienia w PLiku konfiguracji. Poziomy, które są skojarzone z komunikatów śledzenia są zdefiniowane w poniższej tabeli.

Poziom śledzenia opis
Krytyczne Wystąpiły błędy poważne, podobny do następującego:

— Błąd, który może spowodować natychmiastową utratę funkcji użytkownika.
— Zdarzenie, które wymaga od administratora podjęcia działań w celu uniknięcia utraty funkcjonalności.
- Kod zawiesza się.
— Ten poziom śledzenia może również zapewnić wystarczający kontekst do interpretowania innych śladów krytycznych. Może to ułatwić identyfikację sekwencji działań prowadzących do wystąpienia poważnego błędu.
Błąd Wystąpił błąd (na przykład nieprawidłowa konfiguracja lub zachowanie sieci), który może spowodować utratę funkcjonalności użytkownika.
Ostrzeżenie Istnieje warunek, który może następnie spowodować błąd lub błąd krytyczny (na przykład niepowodzenie alokacji lub zbliżanie się do limitu). Normalne przetwarzanie błędów z kodu użytkownika (na przykład przerwane transakcje, przekroczenia limitu czasu, uwierzytelnianie nie powiodło się) może również wygenerować ostrzeżenie.
Informacja Komunikaty przydatne do monitorowania i diagnozowania stanu systemu, pomiaru wydajności lub profilowania są generowane. Może to dotyczyć transakcji i rejestracja zdarzenia okresu istnienia, na przykład tworzenia ani przydzielonej przekroczenia granicę znaczących lub alokacji zasobów znaczących transakcji. Deweloper może następnie wykorzystać takie informacje na potrzeby planowania pojemności i zarządzania wydajnością.

Kody śledzenia

Poniższa tabela zawiera listę kodów śledzenia generowanych przez System.Transactions infrastruktury. W tabeli znajduje się identyfikator kodu śledzenia, EventType poziom wyliczenia dla śledzenia oraz dodatkowe dane zawarte w śledzenia TraceRecord . Ponadto odpowiedni poziom śledzenia śledzenia jest również przechowywany w śledzeniaRekordu.

TraceCode EventType Dodatkowe dane w TraceRecord
TransactionCreated Informacje TransactionTraceId
TransactionPromoted Informacje TransactionTraceId lokalnego, TransactionTraceId rozproszonych
EnlistmentCreated Informacje TransactionTraceId, EnlistmentTraceId, EnlistmentType (trwałe/volatile) EnlistmentOptions
EnlistmentCallbackNegative Ostrzeżenie TransactionTraceId, EnlistmentTraceId,

Wywołanie zwrotne (forcerollback/zostało przerwane/wątPLiwych)
TransactionRollbackCalled Ostrzeżenie TransactionTraceId
TransactionAborted Ostrzeżenie TransactionTraceId
TransactionInDoubt Ostrzeżenie TransactionTraceId
TransactionScopeCreated Informacje TransactionScopeResult, które mogą być następujące:

- Nowa transakcja.
- Przekazano transakcję.
- Przekazano transakcję zależną.
— Przy użyciu bieżącej transakcji.
- Brak transakcji.

nowe bieżącego TransactionTraceId
TransactionScopeDisposed Informacje TransactionTraceId bieżącej transakcji zakresu "oczekiwano".
TransactionScopeIncomplete Ostrzeżenie TransactionTraceId bieżącej transakcji zakresu "oczekiwano".
TransactionScopeNestedIncorrectly Ostrzeżenie TransactionTraceId bieżącej transakcji zakresu "oczekiwano".
TransactionScopeCurrentTransactionChanged Ostrzeżenie Stary bieżącego TransactionTraceId, innych TransactionTraceId
TransactionScopeTimeout Ostrzeżenie TransactionTraceId bieżącej transakcji zakresu "oczekiwano".
DependentCloneCreated Informacje TransactionTraceId, typ utworzonej transakcji zależnej (RollbackIfNotComplete/BlockCommitUntilComplete)
DependentCloneComplete Informacje TransactionTraceId
RecoveryComplete Informacje Identyfikator GUID Menedżera zasobów (z base)
Reenlist Informacje Identyfikator GUID Menedżera zasobów (z base)
TransactionSerialized Informacje TransactionTraceId.
TransactionException Błąd Komunikat wyjątku
InvalidOperationException Błąd Komunikat wyjątku
InternalError Krytyczne Komunikat wyjątku
TransferEvent Podczas deserializacji transakcji, lub promowane z System.Transactions transakcja rozproszona jednego, bieżący identyfikator działania w kontekście wykonywania i identyfikator transakcji rozproszonych są zapisywane.

USŁUGI ponownie wywołuje kodu zarządzanego, identyfikator transakcja rozproszona jest ustawiana jako identyfikator działania w kontekście wykonywania na czas trwania wywołania zwrotnego.
ConfiguredDefaultTimeoutAdjusted Ostrzeżenie Nie dodatkowe dane.
TransactionTimeout Ostrzeżenie Upłynął limit czasu TransactionTraceId bycia transakcji.

Schemat XML dla poszczególnych elementów dodatkowe dane ma następujący format.

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>

Identyfikator Menedżera zasobów

<ResourceManagerId>

string form of guid

</ResourceManagerId>

Problemy zabezpieczeń dla śledzenia

Gdy jako administrator włączysz śledzenie, poufne informacje mogą być zapisywane w dzienniku śledzenia, który jest domyślnie przeglądany publicznie. Aby wyeliminować wszelkie możliwe zagrożenia bezpieczeństwa, należy rozważyć zapisanie dziennika śledzenia w bezpiecznej lokalizacji kontrolowanej przez uprawnienia dostępu do udziału i systemu plików.