Udostępnij za pośrednictwem


Odbiorniki śledzenia

Uwaga / Notatka

Ten artykuł jest specyficzny dla programu .NET Framework. Nie ma zastosowania do nowszych implementacji platformy .NET, w tym .NET 6 i nowszych wersji.

W przypadku korzystania z funkcji Trace, Debug i TraceSource, musisz mieć mechanizm zbierania i rejestrowania wysyłanych komunikatów. Komunikaty śledzenia są odbierane przez słuchacze. Odbiornik służy do zbierania, przechowywania i śledzenia tras komunikatów. Odbiorniki kierują dane wyjściowe śledzenia do odpowiedniego obiektu docelowego, takiego jak dziennik, okno lub plik tekstowy.

Odbiorniki są dostępne dla klas Debug,Trace i TraceSource , z których każdy może wysyłać dane wyjściowe do różnych obiektów odbiornika. Poniżej przedstawiono często używane wstępnie zdefiniowane odbiorniki:

  • Element TextWriterTraceListener przekierowuje dane wyjściowe do wystąpienia klasy TextWriter lub do czegokolwiek, co jest klasą Stream. Może również zapisywać do konsoli lub do pliku, ponieważ są to klasy Stream.

  • Dane EventLogTraceListener wyjściowe są przekierowywane do dziennika zdarzeń.

  • Element DefaultTraceListener emituje komunikaty Write i WriteLine do parametru OutputDebugString i do metody Debugger.Log. To spowoduje wyświetlenie komunikatów debugowania w oknie wyjścia programu Visual Studio. Komunikaty błędu i nieudane komunikaty asercji są również emitowane do interfejsu API systemu Windows OutputDebugString oraz metody Debugger.Log, a także powodują wyświetlenie komunikatu w oknie. To jest zachowanie domyślne dla komunikatów Debug i Trace, ponieważ DefaultTraceListener jest automatycznie dołączany do każdej Listeners kolekcji i jest jedynym odbiornikiem automatycznie dołączonym.

  • Funkcja ConsoleTraceListener kieruje śledzenie lub debugowanie danych wyjściowych do standardowych danych wyjściowych lub standardowego strumienia błędów.

  • Funkcja DelimitedListTraceListener kieruje dane wyjściowe śledzenia lub debugowania do zapisującego tekst, takiego jak zapisywacz strumieni, lub do strumienia, takiego jak strumień pliku. Wynik śledzenia jest w formacie tekstowym rozdzielanym, który używa ogranicznika określonego przez właściwość Delimiter.

  • Element XmlWriterTraceListener kieruje śledzenie lub debugowanie wyjściowych danych jako zaszyfrowane w XML do obiektu TextWriter lub elementu Stream, takiego jak FileStream.

Jeśli chcesz, aby dowolny odbiornik oprócz DefaultTraceListener odbierał Debug, Trace i TraceSource output, musisz dodać go do kolekcji Listeners. Aby uzyskać więcej informacji, zobacz Instrukcje: tworzenie i inicjowanie odbiorników śledzenia oraz Instrukcje: używanie elementu TraceSource i filtrów za pomocą odbiorników śledzenia. Każdy odbiornik w kolekcji Listeners otrzymuje te same komunikaty z metod wyjściowych śledzenia. Załóżmy na przykład, że skonfigurowaliśmy dwa odbiorniki: TextWriterTraceListener i EventLogTraceListener. Każdy odbiornik odbiera ten sam komunikat. TextWriterTraceListener przekierowuje swoje dane wyjściowe do strumienia, a element EventLogTraceListener przekierowuje dane wyjściowe do dziennika zdarzeń.

W poniższym przykładzie pokazano, jak wysyłać dane wyjściowe do kolekcji Odbiorniki .

' Use this example when debugging.
Debug.WriteLine("Error in Widget 42")
' Use this example when tracing.
Trace.WriteLine("Error in Widget 42")
// Use this example when debugging.
System.Diagnostics.Debug.WriteLine("Error in Widget 42");
// Use this example when tracing.
System.Diagnostics.Trace.WriteLine("Error in Widget 42");

Debug i Trace mają tę samą kolekcję Słuchacze, więc jeśli dodasz obiekt do kolekcji Debug.Listeners w aplikacji, zostanie on również dodany do kolekcji Trace.Listeners.

W poniższym przykładzie pokazano, jak używać nasłuchiwacza do wysyłania informacji śledzenia do konsoli.

Trace.Listeners.Clear()
Trace.Listeners.Add(New TextWriterTraceListener(Console.Out))
System.Diagnostics.Trace.Listeners.Clear();
System.Diagnostics.Trace.Listeners.Add(
   new System.Diagnostics.TextWriterTraceListener(Console.Out));

słuchacze Developer-Defined

Można zdefiniować własnych nasłuchiwaczy, dziedzicząc z klasy bazowej TraceListener i nadpisując jej metody za pomocą dostosowanych metod. Aby uzyskać więcej informacji na temat tworzenia odbiorników zdefiniowanych przez deweloperów, zobacz TraceListener w dokumentacji programu .NET Framework.

Zobacz także