다음을 통해 공유


문제 해결: 로그 수신기(Visual Basic)

My.Application.LogMy.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를 참조하세요.

참조