Řešení potíží: Součásti naslouchající protokolům (Visual Basic)
Můžete použít objekty My.Application.Log a My.Log k protokolování informací o událostech, ke kterým dochází v aplikaci.
Chcete-li určit, kteří posluchači protokolovali tyto zprávy, přejděte Návod: Zjištění, kam objekt My.Application.Log zapisuje informace (Visual Basic).
Objekt Log může používat filtrování protokolování k omezení množství informací, které zaznamenává.Pokud nejsou tyto filtry správně nakonfigurovány, protokoly mohou obsahovat nesprávné informace.Další informace o filtrování, naleznete v tématu Návod: Filtrování výstupu My.Application.Log (Visual Basic).
Pokud však je protokolování nakonfigurováno nesprávně, můžete potřebovat další informace o akutální konfiguraci.Tyto informace můžete získat prostřednictvím rozšířené vlastnosti protokolování TraceSource.
Chcete-li zjistit protokolového posluchače pro daný protokolový objekt v kódu
Importujte obor názvů System.Diagnostics na začátku souboru s kódem.Další informace naleznete v tématu Imports – příkaz (obor názvů a typ rozhraní .NET).
Imports System.Diagnostics
Vytvořte funkci, která vrací řetězec tvořený informacemi pro všechny protokolové posluchače.
Function GetListeners(ByVal listeners As TraceListenerCollection) As String Dim ret As String = "" For Each listener As TraceListener In listeners ret &= listener.Name Dim listenerType As Type = listener.GetType If listenerType Is GetType(DefaultTraceListener) Then Dim tmp As DefaultTraceListener = DirectCast(listener, DefaultTraceListener) ret &= ": Writes to the debug output." ElseIf listenerType Is GetType(Logging.FileLogTraceListener) Then Dim tmp As Logging.FileLogTraceListener = DirectCast(listener, Logging.FileLogTraceListener) ret &= ": Log filename: " & tmp.FullLogFileName ElseIf listenerType Is GetType(EventLogTraceListener) Then Dim tmp As EventLogTraceListener = DirectCast(listener, EventLogTraceListener) ret &= ": Event log name: " & tmp.EventLog.Log ElseIf listenerType Is GetType(XmlWriterTraceListener) Then Dim tmp As Diagnostics.XmlWriterTraceListener = DirectCast(listener, XmlWriterTraceListener) ret &= ": XML log" ElseIf listenerType Is GetType(ConsoleTraceListener) Then Dim tmp As ConsoleTraceListener = DirectCast(listener, ConsoleTraceListener) ret &= ": Console log" ElseIf listenerType Is GetType(DelimitedListTraceListener) Then Dim tmp As DelimitedListTraceListener = DirectCast(listener, DelimitedListTraceListener) ret &= ": Delimited log" Else ret &= ": Unhandeled log type: " & listenerType.ToString End If ret &= vbCrLf Next Return ret End Function
Předejte tuto kolekci protokolových posluchačů trasování do funkce GetListeners a zobrazit vrácené hodnoty.
Dim ListenerCollection As TraceListenerCollection ListenerCollection = My.Application.Log.TraceSource.Listeners Dim ListenersText As String = GetListeners(ListenerCollection) MsgBox(ListenersText)
Další informace naleznete v tématu TraceSource.
Viz také
Úkoly
Návod: Zjištění, kam objekt My.Application.Log zapisuje informace (Visual Basic)