Dużo czytałem o śledzeniu i logowaniu, próbując znaleźć złotą zasadę najlepszych praktyk w tej sprawie, ale nie ma żadnej. Ludzie mówią, że dobrzy programiści produkują dobre śledzenie, ale ujmując to w ten sposób, musi to wynikać z doświadczenia.
Czytałem również podobne pytania tutaj i przez Internet i nie są one tak naprawdę tym samym pytaniem lub nie mają satysfakcjonującej odpowiedzi, być może dlatego, że pytania nie zawierają pewnych szczegółów.
Tak więc ludzie mówią, że śledzenie powinno w pewnym sensie powtórzyć doświadczenie debugowania aplikacji w przypadkach, w których nie można dołączyć debugera. Powinien zapewniać wystarczający kontekst, aby można było zobaczyć, która ścieżka jest pobierana w każdym punkcie kontrolnym w aplikacji.
Idąc głębiej, możesz nawet rozróżnić śledzenie od rejestrowania zdarzeń, ponieważ „rejestrowanie zdarzeń różni się od śledzenia tym, że przechwytuje główne stany, a nie szczegółowy przepływ kontroli”.
Teraz powiedz, że chcę wykonywać śledzenie i rejestrowanie przy użyciu tylko standardowych klas .NET, tych w System.Diagnostics
przestrzeni nazw. Doszedłem do wniosku, że klasa TraceSource jest lepsza dla zadania niż statyczna klasa Trace, ponieważ chcę rozróżnić poziomy śledzenia i za pomocą klasy TraceSource mogę przekazać parametr informujący o typie zdarzenia, używając klasy Trace, której muszę użyć Trace.WriteLineIf
a następnie zweryfikuj rzeczy takie jak SourceSwitch.TraceInformation
i SourceSwitch.TraceErrors
, a nawet nie ma właściwości takich jak TraceVerbose
lub TraceStart
.
Mając to na uwadze, czy warto rozważyć dobrą praktykę, aby wykonać następujące czynności:
- Śledzenie zdarzenia „Start” podczas rozpoczynania metody, która powinna reprezentować pojedynczą operację logiczną lub potok, wraz z ciągiem reprezentującym wartości parametrów przekazanych do metody.
- Śledź zdarzenie „Informacje” podczas wstawiania elementu do bazy danych.
- Śledź zdarzenie „Informacja”, wybierając jedną lub drugą ścieżkę w ważnej instrukcji if / else.
- Śledź „Krytyczny” lub „Błąd” w bloku catch w zależności od tego, czy jest to błąd możliwy do odzyskania.
- Śledź zdarzenie „Stop” po zakończeniu wykonywania metody.
Ponadto wyjaśnij, kiedy najlepiej śledzić typy zdarzeń Pełne i Ostrzeżenie. Jeśli masz przykłady kodu z ładnym śledzeniem / rejestrowaniem i chcesz się nim podzielić, byłoby to doskonałe.
Uwaga: znalazłem tutaj kilka dobrych informacji, ale wciąż nie to, czego szukam: http://msdn.microsoft.com/en-us/magazine/ff714589.aspx