Sdílet prostřednictvím


Ř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

  1. 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
    
  2. 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
    
  3. 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)

Referenční dokumentace

Log

Koncepty

Práce s protokoly aplikací v jazyce Visual Basic