Устранение неполадок, связанных с прослушивателями журнала
Обновлен: Ноябрь 2007
Для записи в журнал информации о событиях, возникающих в приложении, можно использовать объекты My.Application.Log и My.Log.
Чтобы определить, какие прослушиватели журналов получают эти сообщения, см. раздел Пошаговое руководство. Определение места записи информации для My.Application.Log.
Объект Log может использовать фильтрацию журнала для ограничения объема данных, регистрируемых в журнале. Если фильтры настроены неправильно, журналы могут содержать неверные данные. Дополнительные сведения о фильтрации см. в разделе Пошаговое руководство. Фильтрация вывода My.Application.Log.
Однако если журнал настроен неправильно, необходима дополнительная информация о его текущей конфигурации. Эту информацию можно получить с помощью многофункционального свойства журнала TraceSource.
Определение прослушивателей журнала для объекта Log в коде
Импортируйте пространство имен System.Diagnostics в начале файла с кодом. Дополнительные сведения см. в разделе Оператор Imports (пространство имен .NET и тип).
Imports System.Diagnostics
Создайте функцию, возвращающую строку, состоящую из информации о каждом из прослушивателей журнала.
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
Передайте коллекцию прослушивателей журнала трассировки в функцию 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