疑难解答:日志侦听器 (Visual Basic)
可以使用 My.Application.Log
和 My.Log
对象来记录有关应用程序中所发生事件的信息。
若要确定接收这些消息的日志侦听器,请参阅演练:确定 My.Application.Log 写入信息的位置。
Log
对象可以使用日志筛选来限制其记录的信息量。 如果筛选器配置错误,则日志可能包含错误信息。 有关筛选的详细信息,请参阅演练:筛选 My.Application.Log 输出。
但是,如果日志配置不正确,则可能需要有关其当前配置的详细信息。 可通过日志的高级 TraceSource
属性获取此信息。
若要确定代码中日志对象的日志侦听器
在代码文件的开头导入 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 &= ": Unhandled 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。