Sdílet prostřednictvím


Řešení potíží: Součásti naslouchající protokolům (Visual Basic)

Objekty a My.Log můžete použít My.Application.Log k protokolování informací o událostech, ke kterým dochází ve vaší aplikaci.

Pokud chcete zjistit, které naslouchací procesy protokolu tyto zprávy obdrží, projděte si téma Návod: Určení, kam my.Application.Log zapisuje informace.

Objekt Log může pomocí filtrování protokolu omezit množství informací, které protokoluje. Pokud jsou filtry chybně nakonfigurované, můžou protokoly obsahovat nesprávné informace. Další informace o filtrování najdete v tématu Návod: Filtrování výstupu My.Application.Log.

Pokud je ale protokol nakonfigurovaný nesprávně, možná budete potřebovat další informace o jeho aktuální konfiguraci. K této informaci se můžete dostat prostřednictvím rozšířené TraceSource vlastnosti protokolu.

Určení naslouchacích procesů protokolu pro objekt Log v kódu

  1. Importujte System.Diagnostics obor názvů na začátku souboru kódu. Další informace najdete v tématu Imports – příkaz (obor názvů a typ .NET).

    Imports System.Diagnostics
    
  2. Vytvořte funkci, která vrátí řetězec skládající se z informací pro každý z naslouchacích procesů protokolu.

    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 &= ": Unhandled log type: " &
                    listenerType.ToString
            End If
            ret &= vbCrLf
        Next
    
        Return ret
    End Function
    
  3. Předejte kolekci naslouchacích procesů trasování protokolu do GetListeners funkce a zobrazte vrácenou hodnotu.

    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é