다음을 통해 공유


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

My.Application.Log 및 My.Log 개체를 사용하여 응용 프로그램에서 발생하는 이벤트에 대한 정보를 기록할 수 있습니다.

해당 메시지를 받는 로그 수신기를 확인하려면 연습: My.Application.Log가 정보를 기록하는 위치 확인(Visual Basic)을 참조하십시오.

Log 개체는 로그 필터링을 사용하여 기록할 정보의 양을 제한할 수 있습니다. 필터가 잘못 구성되면 로그에 잘못된 정보가 포함될 수 있습니다. 필터링에 대한 자세한 내용은 연습: My.Application.Log 출력 필터링(Visual Basic)을 참조하십시오.

하지만 로그가 잘못 구성된 경우에는 현재 구성에 대한 추가 정보가 필요할 수 있습니다. 이 정보는 로그의 고급 속성인 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가 정보를 기록하는 위치 확인(Visual Basic)

참조

Microsoft.VisualBasic.Logging.Log

개념

Visual Basic에서 응용 프로그램 로그 작업