O ile widziałem w dokumentacji, nie jest to specjalnie przeznaczone do jednego celu. Myślę, że jest tam, aby połączyć się z własną logiką w celu śledzenia wydarzeń. Metoda ShouldTrace()
na SourceFilter
przyjmuje pasujący parametr id
, dzięki czemu można go również użyć do określenia, które zdarzenia lub typy zdarzeń mają miejsce.
Osobiście, gdy używam TraceSource
(co wprawdzie nie jest zbyt wiele, odkąd odkryłem je dopiero niedawno) używam go do śledzenia typów zdarzeń lub kategorii. W jednej aplikacji miałem już wyliczenie dla typów zdarzeń, których używałem z inną metodą rejestrowania, z wartościami Debugowanie, Informacje, Ostrzeganie, Błąd, Śmierć, więc rzuciłem to na int
i użyłem tego jako id
, co pomogło później w filtrowaniu więc mogłem odfiltrować wszystko, co znajdowało się poniżej poziomu, który mnie interesował, aby usunąć ślady.
Inną możliwością jest użycie różnych wartości do powiązania z różnymi częściami aplikacji, więc dostęp do danych = 1, Konta użytkowników = 2, Logika produktu = 3, Powiadomienia = 4, UI = 5 itd. Znowu, ty może użyć tego do filtrowania śladu w dół tylko do typu rzeczy, na którą patrzysz.Alternatywnie, możesz (zgodnie z sugestią) użyć różnych wartości id
do oznaczania różnych typów zdarzeń, aby można było używać ich jak kodów błędów, aby (na przykład) za każdym razem, gdy zobaczyłeś id
z 26 nie można ustanowić połączenia z bazą danych lub cokolwiek innego.
Nie szczególnie ważne czego użyć parametru id
na tak długo, jak:
- Jest przydatna w budowaniu i debugowania programu
- To jest jasne i zrozumiałe dla programistów czytania przez kod
- jest on stosowany konsekwentnie w całym programie
Jedną z możliwości jest to, że można mieć scentralizowany klasę, że człowiek starzeje się zdarzenie id
s i podaje wartości oparte na pewnym rodzaju danych wejściowych, aby upewnić się, że cała aplikacja używa tego samego obiektu id
.
Wierzę (bez dowodu), kiedy po raz pierwszy "TraceEvent()" z identyfikatorem i zaraz po 'TraceData()' z tym samym identyfikatorem, słuchacze są w stanie połączyć dane ze zdarzeniem ?! Przykład: Najpierw 'TraceEvent()' wyjątek, a zaraz po nim 'TraceData()' ślad stosu. – WiSeeker