疑難排解:記錄檔接聽程式 (Visual Basic)

您可以使用 My.Application.LogMy.Log 物件來記錄應用程式中發生之事件的相關資訊。

若要判斷哪些記錄檔接聽程式接收這些訊息,請參閱逐步解說:判斷 My.Application.Log 寫入資訊的位置

Log 物件可以使用記錄檔篩選來限制記錄的資訊數量。 如果篩選條件設定錯誤,記錄檔可能包含錯誤的資訊。 如需詳細資訊,請參閱逐步解說:篩選 My.Application.Log 輸出

不過,如果記錄檔設定不正確,您可能需要目前組態的詳細資訊。 您可以透過記錄檔的進階 TraceSource 屬性來取得這項資訊。

判斷程式碼中記錄檔物件的記錄檔接聽程式

  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 &= ": Unhandled 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

另請參閱