次の方法で共有


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

更新 : 2007 年 11 月

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 &= ": Unhandeled 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 プロパティ (My.Application.Log and My.Log)」を参照してください。

参照

処理手順

チュートリアル : My.Application.Log による情報の書き込み先の確認

概念

Visual Basic でのアプリケーション ログの使用

参照

My.Application.Log オブジェクト

My.Log オブジェクト