Felsökning: Logglyssnare (Visual Basic)

Du kan använda objekten My.Application.Log och My.Log för att logga information om händelser som inträffar i ditt program.

Information om vilka logglyssnare som tar emot dessa meddelanden finns i Genomgång: Fastställa var my.application.log skriver information.

Objektet Log kan använda loggfiltrering för att begränsa mängden information som det loggar. Om filtren är felkonfigurerade kan loggarna innehålla fel information. Mer information om filtrering finns i Genomgång: Filtrera Utdata för My.Application.Log.

Men om en logg har konfigurerats felaktigt kan du behöva mer information om den aktuella konfigurationen. Du kan komma åt den här informationen via loggens avancerade TraceSource egenskap.

Så här fastställer du logglyssnare för loggobjektet i koden

  1. System.Diagnostics Importera namnområdet i början av kodfilen. Mer information finns i Importuttryck (.NET-namnområde och typ).

    Imports System.Diagnostics
    
  2. Skapa en funktion som returnerar en sträng som består av information för var och en av loggens lyssnare.

    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. Skicka samlingen av loggens spårningslyssnare GetListeners till funktionen och visa returvärdet.

    Dim ListenerCollection As TraceListenerCollection
    ListenerCollection = My.Application.Log.TraceSource.Listeners
    Dim ListenersText As String = GetListeners(ListenerCollection)
    MsgBox(ListenersText)
    

    Mer information finns i TraceSource.

Se även