次の方法で共有


トラブルシューティング: ログ リスナー (Visual Basic)

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 &= ": 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」を参照してください。

関連項目