Przełączniki śledzenia
Uwaga
Ten artykuł jest specyficzny dla programu .NET Framework. Nie ma zastosowania do nowszych implementacji platformy .NET, w tym .NET 6 i nowszych wersji.
Przełączniki śledzenia umożliwiają włączanie, wyłączanie i filtrowanie danych wyjściowych śledzenia. Są to obiekty, które istnieją w kodzie i można je skonfigurować zewnętrznie za pośrednictwem pliku config. Istnieją trzy typy przełączników śledzenia dostępnych w programie .NET Framework: BooleanSwitch klasa, TraceSwitch klasa i SourceSwitch klasa. Klasa BooleanSwitch działa jako przełącznik, włączając lub wyłączając różne instrukcje śledzenia. Klasy TraceSwitch i SourceSwitch umożliwiają włączenie przełącznika śledzenia dla określonego poziomu śledzenia, dzięki czemu Trace wyświetlane są komunikaty lub TraceSource określone dla tego poziomu i wszystkich poziomów poniżej. Jeśli wyłączysz przełącznik, komunikaty śledzenia nie będą wyświetlane. Wszystkie te klasy pochodzą z klasy abstrakcyjnej (MustInherit) Switch, podobnie jak wszystkie przełączniki opracowane przez użytkownika.
Przełączniki śledzenia mogą być przydatne do filtrowania informacji. Możesz na przykład zobaczyć każdy komunikat śledzenia w module dostępu do danych, ale tylko komunikaty o błędach w pozostałej części aplikacji. W takim przypadku należy użyć jednego przełącznika śledzenia dla modułu dostępu do danych i jednego przełącznika dla pozostałej części aplikacji. Korzystając z pliku .config, aby skonfigurować przełączniki do odpowiednich ustawień, można kontrolować typy odebranych komunikatów śledzenia. Aby uzyskać więcej informacji, zobacz How to: Create, Initialize and Configure Trace Switchs (Instrukcje: tworzenie, inicjowanie i konfigurowanie przełączników śledzenia).
Zazwyczaj wdrożona aplikacja jest wykonywana z wyłączonymi przełącznikami, dzięki czemu użytkownicy nie muszą obserwować wielu nieistotnych komunikatów śledzenia wyświetlanych na ekranie lub wypełniania pliku dziennika podczas uruchamiania aplikacji. Jeśli podczas wykonywania aplikacji wystąpi problem, możesz zatrzymać aplikację, włączyć przełączniki i ponownie uruchomić aplikację. Następnie zostaną wyświetlone komunikaty śledzenia.
Aby użyć przełącznika, należy najpierw utworzyć obiekt switch z klasy BooleanSwitch, klasy TraceSwitch lub klasy przełącznika zdefiniowanego przez dewelopera. Aby uzyskać więcej informacji na temat tworzenia przełączników zdefiniowanych przez deweloperów, zobacz klasę Switch w dokumentacji programu .NET Framework. Następnie należy ustawić wartość konfiguracji, która określa, kiedy ma być używany obiekt przełącznika. Następnie przetestujesz ustawienie obiektu przełącznika w różnych metodach śledzenia (lub debugowania).
Poziomy śledzenia
W przypadku korzystania z funkcji TraceSwitch należy wziąć pod uwagę dodatkowe zagadnienia. Obiekt TraceSwitch ma cztery właściwości, które zwracają wartości logiczne wskazujące, czy przełącznik jest ustawiony na co najmniej określony poziom:
Poziomy umożliwiają ograniczenie ilości otrzymywanych informacji śledzenia tylko do tych informacji potrzebnych do rozwiązania problemu. Należy określić poziom szczegółów w danych wyjściowych śledzenia, ustawiając i konfigurując przełączniki śledzenia do odpowiedniego poziomu śledzenia. Komunikaty o błędach, komunikaty ostrzegawcze, komunikaty informacyjne, pełne komunikaty śledzenia lub żaden komunikat w ogóle.
To jest całkowicie do Ciebie, aby zdecydować, jakiego rodzaju wiadomości skojarzyć z każdym poziomem. Zazwyczaj zawartość komunikatów śledzenia zależy od tego, co skojarzysz z każdym poziomem, ale określa się różnice między poziomami. Możesz na przykład podać szczegółowe opisy problemu na poziomie 3 (informacje), ale podaj tylko numer referencyjny błędu na poziomie 1 (Błąd). Wystarczy zdecydować, jaki schemat działa najlepiej w aplikacji.
Te właściwości odpowiadają wartościom od 1 do 4 wyliczenia TraceLevel . W poniższej tabeli wymieniono poziomy wyliczenia TraceLevel i ich wartości.
Wyliczona wartość | Wartość całkowita | Typ wyświetlanego komunikatu (lub zapisanego w określonym obiekcie docelowym danych wyjściowych) |
---|---|---|
Wyłączona | 0 | Brak |
Błąd | 1 | Tylko komunikaty o błędach |
Ostrzeżenie | 2 | Komunikaty ostrzegawcze i komunikaty o błędach |
Informacje | 3 | Komunikaty informacyjne, komunikaty ostrzegawcze i komunikaty o błędach |
Pełne informacje | 100 | Pełne komunikaty, komunikaty informacyjne, komunikaty ostrzegawcze i komunikaty o błędach |
Właściwości TraceSwitch wskazują maksymalny poziom śledzenia przełącznika. Oznacza to, że informacje o śledzeniu są zapisywane dla określonego poziomu, a także dla wszystkich niższych poziomów. Jeśli na przykład właściwość TraceInfo ma wartość true, wartości TraceError i TraceWarning są również prawdziwe, ale właściwość TraceVerbose może mieć wartość false.
Te właściwości są tylko do odczytu. Obiekt TraceSwitch automatycznie ustawia je po ustawieniu właściwości TraceLevel . Na przykład:
Dim myTraceSwitch As New TraceSwitch("SwitchOne", "The first switch")
myTraceSwitch.Level = TraceLevel.Info
' This message box displays true, because setting the level to
' TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(myTraceSwitch.TraceWarning.ToString())
' This messagebox displays false.
MessageBox.Show(myTraceSwitch.TraceVerbose.ToString())
System.Diagnostics.TraceSwitch myTraceSwitch =
new System.Diagnostics.TraceSwitch("SwitchOne", "The first switch");
myTraceSwitch.Level = System.Diagnostics.TraceLevel.Info;
// This message box displays true, because setting the level to
// TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(myTraceSwitch.TraceWarning.ToString());
// This message box displays false.
MessageBox.Show(myTraceSwitch.TraceVerbose.ToString());
Przełączniki zdefiniowane przez dewelopera
Oprócz udostępniania przełączników logicznych i TraceSwitch można zdefiniować własne przełączniki, dziedzicząc z klasy Switch i przesłaniając metody klasy bazowej za pomocą dostosowanych metod. Aby uzyskać więcej informacji na temat tworzenia przełączników zdefiniowanych przez deweloperów, zobacz klasę Switch w dokumentacji programu .NET Framework.