Udostępnij za pośrednictwem


Rozwiązywanie problemów: odbiorniki logu (Visual Basic)

Obiekty i My.Log umożliwiają My.Application.Log rejestrowanie informacji o zdarzeniach występujących w aplikacji.

Aby określić, które odbiorniki dziennika odbierają te komunikaty, zobacz Przewodnik: określanie miejsca zapisu informacji w pliku My.Application.Log.

Obiekt Log może używać filtrowania dzienników, aby ograniczyć ilość informacji, które rejestruje. Jeśli filtry są nieprawidłowo skonfigurowane, dzienniki mogą zawierać nieprawidłowe informacje. Aby uzyskać więcej informacji na temat filtrowania, zobacz Przewodnik: filtrowanie danych wyjściowych My.Application.Log.

Jeśli jednak dziennik jest niepoprawnie skonfigurowany, może być konieczne więcej informacji o jego bieżącej konfiguracji. Te informacje można uzyskać za pośrednictwem właściwości zaawansowanej TraceSource dziennika.

Aby określić odbiorniki dziennika dla obiektu Log w kodzie

  1. Zaimportuj System.Diagnostics przestrzeń nazw na początku pliku kodu. Aby uzyskać więcej informacji, zobacz Import Statement (.NET Namespace and Type).

    Imports System.Diagnostics
    
  2. Utwórz funkcję zwracającą ciąg składający się z informacji dla każdego odbiornika dziennika.

    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. Przekaż kolekcję odbiorników śledzenia dziennika do GetListeners funkcji i wyświetl wartość zwracaną.

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

    Aby uzyskać więcej informacji, zobacz TraceSource.

Zobacz też