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.