Udostępnij za pośrednictwem


Obiekty nasłuchujące ś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.

W przypadku korzystania z funkcji Trace, Debug i TraceSource, musisz mieć mechanizm zbierania i rejestrowania wysyłanych komunikatów. Komunikaty śledzenia są odbierane przez odbiorniki. 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.

Odbiorniki są dostępne dla klas Debug, Trace iTraceSource, 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 TextWriter klasy lub do niczego, co jest klasą Stream . Może również zapisywać dane w konsoli programu lub w pliku, ponieważ są Stream to klasy.

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

  • Element DefaultTraceListener emituje komunikaty Write i WriteLine do parametru OutputDebugString i do metody Debugger.Log. W programie Visual Studio spowoduje to wyświetlenie komunikatów debugowania w oknie Dane wyjściowe. Komunikaty asertywne i nieudane są również emitowane do interfejsu API systemu Windows OutputDebugString i metody Debugger.Log, a także powodują wyświetlenie pola komunikatu. To zachowanie jest zachowaniem domyślnym dla komunikatów debugowania i śledzenia , ponieważ element 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 śledzenie lub debugowanie danych wyjściowych do modułu zapisywania tekstu, takiego jak składnik zapisywania strumienia lub strumienia, takiego jak strumień plików. Dane wyjściowe śledzenia są w formacie tekstowym rozdzielanym, który używa ogranicznika określonego Delimiter przez właściwość .

  • Funkcja XmlWriterTraceListener przekierowuje śledzenie lub debugowanie danych wyjściowych jako dane zakodowane w formacie XML do obiektu TextWriter lub do Streamelementu , takiego jak FileStream.

Jeśli chcesz, aby dowolny odbiornik oprócz odbiornika DefaultTraceListener odbierał dane debugowania, śledzenia i TraceSource danych wyjściowych, musisz dodać go do Listeners kolekcji. Aby uzyskać więcej informacji, zobacz How to: Create and Initialize Trace Listeners (Instrukcje: tworzenie i inicjowanie odbiorników śledzenia) oraz How to: Use TraceSource and Filters with Trace Listeners (Instrukcje: tworzenie i inicjowanie odbiorników śledzenia) oraz How to: Use TraceSource and Filters with Trace Listeners (Instrukcje: używanie elementu TraceSource i filtrów za pomocą odbiorników śledzenia). Każdy odbiornik w kolekcji Odbiorniki pobiera te same komunikaty z metod danych 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");

Debugowanie i śledzenie współużytkuje tę samą kolekcję Odbiorniki , więc jeśli dodasz obiekt odbiornika do kolekcji Debug.Listeners w aplikacji, zostanie on również dodany do kolekcji Trace.Listeners .

W poniższym przykładzie pokazano, jak używać odbiornika 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));

Odbiorniki zdefiniowane przez dewelopera

Własne odbiorniki można zdefiniować, dziedzicząc z klasy bazowej TraceListener i przesłaniają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 też