Поделиться через


Устранение неполадок, связанных с прослушивателями журнала

Обновлен: Ноябрь 2007

Для записи в журнал информации о событиях, возникающих в приложении, можно использовать объекты My.Application.Log и My.Log.

Чтобы определить, какие прослушиватели журналов получают эти сообщения, см. раздел Пошаговое руководство. Определение места записи информации для My.Application.Log.

Объект Log может использовать фильтрацию журнала для ограничения объема данных, регистрируемых в журнале. Если фильтры настроены неправильно, журналы могут содержать неверные данные. Дополнительные сведения о фильтрации см. в разделе Пошаговое руководство. Фильтрация вывода My.Application.Log.

Однако если журнал настроен неправильно, необходима дополнительная информация о его текущей конфигурации. Эту информацию можно получить с помощью многофункционального свойства журнала TraceSource.

Определение прослушивателей журнала для объекта Log в коде

  1. Импортируйте пространство имен System.Diagnostics в начале файла с кодом. Дополнительные сведения см. в разделе Оператор Imports (пространство имен .NET и тип).

    Imports System.Diagnostics
    
  2. Создайте функцию, возвращающую строку, состоящую из информации о каждом из прослушивателей журнала.

    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. Передайте коллекцию прослушивателей журнала трассировки в функцию GetListeners и отобразите возвращаемое значение.

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

    Дополнительные сведения см. в разделе Свойство TraceSource (My.Application.Log и My.Log).

См. также

Задачи

Пошаговое руководство. Определение места записи информации для My.Application.Log

Основные понятия

Работа с журналами приложения в Visual Basic

Ссылки

Объект My.Application.Log

Объект My.Log