可以使用My.Application.Log和My.Log对象记录有关应用程序中发生的事件的信息。
Log对象可以使用日志筛选来限制它所记录的信息量。如果筛选配置不正确,则日志可能包含错误的信息。
但是,如果日志配置不正确,则可能需要有关其当前配置的更多信息。可以通过日志的TraceSource高级属性获取此信息。
为代码中的日志对象确定日志侦听器
1.在代码文件的开头导入System.Diagnostics命名空间。
Visual Basic
Imports System.Diagnostics
2.创建一个函数,用于返回由每个日志侦听器的信息组成的字符串。
Visual Basic
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函数,并显示返回值。
Visual Basic
Dim ListenerCollection As TraceListenerCollection
ListenerCollection = My.Application.Log.TraceSource.Listeners
Dim ListenersText As String = GetListeners(ListenerCollection)
MsgBox(ListenersText)
有关更多信息,请参见 TraceSource 属性(My.Application.Log和My.Log)。