문제 해결: 로그 수신기
업데이트: 2007년 11월
My.Application.Log와 My.Log 개체를 사용하여 응용 프로그램에서 발생하는 이벤트에 대한 정보를 기록할 수 있습니다.
해당 메시지를 받는 로그 수신기를 확인하려면 연습: My.Application.Log가 정보를 기록하는 위치 확인을 참조하십시오.
Log 개체는 로그 필터링을 사용하여 기록할 정보의 양을 제한할 수 있습니다. 필터가 잘못 구성되면 로그에 잘못된 정보가 포함될 수 있습니다. 필터링에 대한 자세한 내용은 연습: My.Application.Log 출력 필터링을 참조하십시오.
하지만 로그가 잘못 구성된 경우에는 현재 구성에 대한 추가 정보가 필요할 수 있습니다. 이 정보는 로그의 고급 속성인 TraceSource를 통해 얻을 수 있습니다.
코드에서 Log 개체의 로그 수신기를 확인하려면
코드 파일 시작 부분에서 System.Diagnostics 네임스페이스를 가져옵니다. 자세한 내용은 Imports 문(.NET 네임스페이스 및 형식)을 참조하십시오.
Imports System.Diagnostics
각 로그 수신기에 대한 정보로 구성된 문자열을 반환하는 함수를 만듭니다.
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
로그의 추적 수신기 컬렉션을 GetListeners 함수로 전달하고 반환 값을 표시합니다.
Dim ListenerCollection As TraceListenerCollection ListenerCollection = My.Application.Log.TraceSource.Listeners Dim ListenersText As String = GetListeners(ListenerCollection) MsgBox(ListenersText)
자세한 내용은 TraceSource 속성(My.Application.Log 및 My.Log)을 참조하십시오.
참고 항목
작업
연습: My.Application.Log가 정보를 기록하는 위치 확인