연습: My.Application.Log 출력 필터링(Visual Basic)
이 연습에서는 My.Application.Log
개체에 대한 기본 로그 필터링을 변경하여 Log
개체에서 수신기로 전달되는 정보 및 수신기가 작성하는 정보를 제어하는 방법을 보여 줍니다. 구성 정보가 애플리케이션의 구성 파일에 저장되므로 애플리케이션을 빌드한 후에도 로깅 동작을 변경할 수 있습니다.
시작
My.Application.Log
에서 작성하는 각 메시지에는 연결된 심각도 수준이 있으며, 필터링 메커니즘은 로그 출력을 제어하는 데 이를 사용합니다. 이 샘플 애플리케이션은 My.Application.Log
메서드를 사용하여 서로 다른 심각도 수준으로 여러 로그 메시지를 작성합니다.
샘플 애플리케이션을 빌드하려면
새 Visual Basic Windows 애플리케이션 프로젝트를 엽니다.
Button1이라는 단추를 Form1에 추가합니다.
Button1에 대한 Click 이벤트 처리기에 다음 코드를 추가합니다.
' Activity tracing information My.Application.Log.WriteEntry("Entering Button1_Click", TraceEventType.Start) ' Tracing information My.Application.Log.WriteEntry("In Button1_Click", TraceEventType.Information) ' Create an exception to log. Dim ex As New ApplicationException ' Exception information My.Application.Log.WriteException(ex) ' Activity tracing information My.Application.Log.WriteEntry("Leaving Button1_Click", TraceEventType.Stop)
디버거에서 애플리케이션을 실행합니다.
Button1을 누릅니다.
애플리케이션이 다음 정보를 애플리케이션의 디버그 출력 및 로그 파일에 기록합니다.
DefaultSource Information: 0 : In Button1_Click
DefaultSource Error: 2 : Error in the application.
애플리케이션을 닫습니다.
애플리케이션의 디버그 출력 창을 보는 방법에 대한 자세한 내용은 출력 창을 참조하세요. 애플리케이션 로그 파일의 위치에 대한 자세한 내용은 연습: My.Application.Log가 정보를 기록하는 위치 확인을 참조하세요.
참고 항목
기본적으로 애플리케이션을 닫으면 애플리케이션이 로그 파일 출력을 플러시합니다.
위의 예제에서 WriteEntry 메서드에 대한 두 번째 호출 및 WriteException 메서드에 대한 호출은 로그 출력을 생성하지만,
WriteEntry
메서드에 대한 첫 번째 및 마지막 호출은 로그 출력을 생성하지 않습니다.WriteEntry
및WriteException
의 심각도 수준은 "정보" 및 "오류"이므로, 둘 다My.Application.Log
개체의 기본 로그 필터링에서 허용됩니다. 그러나 "시작" 및 "중지" 심각도 수준의 이벤트는 로그 출력 생성이 금지됩니다.
모든 My.Application.Log 수신기에 대한 필터링
My.Application.Log
개체는 DefaultSwitch
라고 명명된 SourceSwitch를 사용하여 WriteEntry
및 WriteException
메서드에서 로그 수신기로 전달할 메시지를 제어합니다. 해당 값을 SourceLevels 열거형 값 중 하나로 설정하여 애플리케이션의 구성 파일에서 DefaultSwitch
를 구성할 수 있습니다. 기본적으로 값은 "정보"입니다.
다음 표는 특정 DefaultSwitch
설정이 지정된 경우 로그가 메시지를 수신기에 기록하는 데 필요한 심각도 수준을 보여 줍니다.
DefaultSwitch 값 | 출력에 필요한 메시지 심각도 |
---|---|
Critical |
Critical |
Error |
Critical 또는 Error |
Warning |
Critical , Error 또는 Warning |
Information |
Critical , Error , Warning 또는 Information |
Verbose |
Critical , Error , Warning , Information 또는 Verbose |
ActivityTracing |
Start , Stop , Suspend , Resume 또는 Transfer |
All |
모든 메시지를 허용합니다. |
Off |
모든 메시지를 차단합니다. |
참고 항목
WriteEntry
및 WriteException
메서드는 각각 심각도 수준을 지정하지 않는 오버로드를 가지고 있습니다. WriteEntry
오버로드에 대한 암시적 심각도 수준은 "정보"이며, WriteException
오버로드에 대한 암시적 심각도 수준은 "오류"입니다.
다음 표는 이전 예제에 나와 있는 로그 출력을 설명합니다. 기본 DefaultSwitch
설정이 "정보"인 경우 WriteEntry
메서드에 대한 두 번째 호출 및 WriteException
메서드에 대한 호출만이 로그 출력을 생성합니다.
작업 추적 이벤트만 기록하려면
솔루션 탐색기에서 app.config를 마우스 오른쪽 단추로 클릭하고 열기를 선택합니다.
또는
app.config 파일이 없는 경우
프로젝트 메뉴에서 새 항목 추가를 선택합니다.
새 항목 추가 대화 상자에서 애플리케이션 구성 파일을 선택합니다.
추가를 클릭합니다.
최상위
<configuration>
섹션의<system.diagnostics>
섹션에 있는<switches>
섹션으로 이동합니다.스위치 컬렉션에
DefaultSwitch
를 추가하는 요소를 찾습니다. 이 요소는 다음과 유사합니다.<add name="DefaultSwitch" value="Information" />
value
특성의 값을 "ActivityTracing"으로 변경합니다.app.config 파일의 내용은 다음 XML과 비슷합니다.
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <sources> <!-- This section configures My.Application.Log --> <source name="DefaultSource" switchName="DefaultSwitch"> <listeners> <add name="FileLog"/> </listeners> </source> </sources> <switches> <add name="DefaultSwitch" value="ActivityTracing" /> </switches> <sharedListeners> <add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/> </sharedListeners> </system.diagnostics> </configuration>
디버거에서 애플리케이션을 실행합니다.
Button1을 누릅니다.
애플리케이션이 다음 정보를 애플리케이션의 디버그 출력 및 로그 파일에 기록합니다.
DefaultSource Start: 4 : Entering Button1_Click
DefaultSource Stop: 5 : Leaving Button1_Click
애플리케이션을 닫습니다.
value
특성의 값을 다시 "정보"로 변경합니다.참고 항목
DefaultSwitch
스위치 설정은My.Application.Log
만 제어합니다. .NET System.Diagnostics.Trace 및 System.Diagnostics.Debug 클래스의 동작은 변경되지 않습니다.
My.Application.Log 수신기에 대한 개별 필터링
이전 예제에서는 모든 My.Application.Log
출력에 대한 필터링을 변경하는 방법을 보여 줍니다. 이 예제에서는 개별 로그 수신기를 필터링하는 방법을 보여 줍니다. 기본적으로 애플리케이션에는 각각 애플리케이션의 디버그 출력 및 로그 파일에 기록하는 두 개의 수신기가 있습니다.
구성 파일은 각 로그 수신기에 My.Application.Log
용 스위치와 비슷한 필터를 허용하여 로그 수신기의 동작을 제어합니다. 로그 수신기는 로그의 DefaultSwitch
및 로그 수신기의 필터에서 메시지의 심각도를 허용하는 경우에만 메시지를 출력합니다.
이 예제는 새 디버그 수신기에 대한 필터링을 구성하고 Log
개체에 추가하는 방법을 보여 줍니다. 기본 디버그 수신기는 Log
개체에서 제거해야 하므로, 디버그 메시지가 새 디버그 수신기에서 오는 것이 분명합니다.
동작 추적 이벤트만 기록하려면
솔루션 탐색기에서 app.config를 마우스 오른쪽 단추로 클릭하고 열기를 선택합니다.
또는
app.config 파일이 없는 경우
프로젝트 메뉴에서 새 항목 추가를 선택합니다.
새 항목 추가 대화 상자에서 애플리케이션 구성 파일을 선택합니다.
추가를 클릭합니다.
솔루션 탐색기에서 app.config를 마우스 오른쪽 단추로 클릭합니다. 열기를 선택합니다.
<sources>
섹션 아래에서name
특성이 "DefaultSource"인<source>
섹션에서<listeners>
섹션을 찾습니다.<sources>
섹션은 최상위<configuration>
섹션의<system.diagnostics>
섹션에 있습니다.이 요소를
<listeners>
섹션에 추가합니다.<!-- Remove the default debug listener. --> <remove name="Default"/> <!-- Add a filterable debug listener. --> <add name="NewDefault"/>
최상위
<sharedListeners>
섹션의<system.diagnostics>
섹션에서<configuration>
섹션을 찾습니다.다음 요소를
<sharedListeners>
섹션에 추가합니다.<add name="NewDefault" type="System.Diagnostics.DefaultTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error" /> </add>
EventTypeFilter 필터는 SourceLevels 열거형 값 중 하나를 해당
initializeData
특성으로 사용합니다.app.config 파일의 내용은 다음 XML과 비슷합니다.
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <sources> <!-- This section configures My.Application.Log --> <source name="DefaultSource" switchName="DefaultSwitch"> <listeners> <add name="FileLog"/> <!-- Remove the default debug listener. --> <remove name="Default"/> <!-- Add a filterable debug listener. --> <add name="NewDefault"/> </listeners> </source> </sources> <switches> <add name="DefaultSwitch" value="Information" /> </switches> <sharedListeners> <add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" initializeData="FileLogWriter"/> <add name="NewDefault" type="System.Diagnostics.DefaultTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> <filter type="System.Diagnostics.EventTypeFilter" initializeData="Error" /> </add> </sharedListeners> </system.diagnostics> </configuration>
디버거에서 애플리케이션을 실행합니다.
Button1을 누릅니다.
애플리케이션이 다음 정보를 애플리케이션의 로그 파일에 기록합니다.
Default Information: 0 : In Button1_Click
Default Error: 2 : Error in the application.
애플리케이션은 좀 더 제한적인 필터링 때문에 애플리케이션의 디버그 출력에 정보를 더 적게 기록합니다.
Default Error 2 Error
애플리케이션을 닫습니다.
배포 후 로그 설정을 변경하는 방법에 대한 자세한 내용은 애플리케이션 로그 작업을 참조하세요.
참고 항목
.NET