이 연습에서는 개체에 대한 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_ClickDefaultSource Error: 2 : Error in the application.애플리케이션을 닫습니다.
애플리케이션의 디버그 출력 창을 보는 방법에 대한 자세한 내용은 출력 창을 참조하세요. 애플리케이션 로그 파일의 위치에 대한 자세한 내용은 연습: My.Application.Log에서 정보를 쓰는 위치 결정 연습을 참조하세요.
비고
기본적으로 애플리케이션은 애플리케이션이 닫히면 로그 파일 출력을 플러시합니다.
위의 예제에서 메서드에 대한 WriteEntry 두 번째 호출과 메서드에 대한 WriteException 호출은 로그 출력을 생성하지만 메서드에 대한 첫 번째 및 마지막 호출
WriteEntry은 그렇지 않습니다. 이는WriteEntry및WriteException의 심각도 수준이 각각 "정보"와 "오류"이며, 둘 다My.Application.Log개체의 기본 로그 필터링에서 허용되기 때문입니다. 그러나 "시작" 및 "중지" 심각도 수준의 이벤트는 로그 출력을 생성할 수 없습니다.
모든 My.Application.Log 수신기에 대한 필터링
My.Application.Log 개체는 SourceSwitch로 명명된 DefaultSwitch를 사용하여 WriteEntry 및 WriteException 메서드로부터 로그 수신기로 전달되는 메시지를 제어합니다. 애플리케이션의 구성 파일에서 DefaultSwitch을(를) 구성하기 위해, 해당 값을 SourceLevels 열거형 값 중 하나로 설정할 수 있습니다. 기본적으로 해당 값은 "정보"입니다.
이 표에서는 특정 DefaultSwitch 설정이 지정된 경우 Log가 수신기에 메시지를 쓰는 데 필요한 심각도 수준을 보여 주었습니다.
| 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 설정이 "Information"으로 되어 있는 경우, 메서드 WriteEntry에 대한 두 번째 호출과 메서드 WriteException 호출만 로그 출력을 생성합니다.
활동 추적 이벤트만 기록하려면
솔루션 탐색기에서 app.config 마우스 오른쪽 단추로 클릭하고 열기를 선택합니다.
-또는-
app.config 파일이 없는 경우:
프로젝트 메뉴에서 새 항목 추가를 선택합니다.
새 항목 추가 대화 상자에서 애플리케이션 구성 파일을 선택합니다.
추가를 클릭합니다.
<switches>가<system.diagnostics>섹션에 있고,<system.diagnostics>가 최상위 섹션에 있는 것을 찾습니다.스위치 컬렉션에
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_ClickDefaultSource Stop: 5 : Leaving Button1_Click애플리케이션을 닫습니다.
특성 값을
value다시 "정보"로 변경합니다.비고
스위치 설정은
DefaultSwitch만 제어합니다. .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 마우스 오른쪽 단추로 클릭합니다. 열기를 선택합니다.
<listeners>섹션을 찾습니다. 이는<source>섹션 내에 있으며 이 섹션은name섹션 아래의 "DefaultSource" 특성을 가진<sources>섹션에 포함됩니다.<sources>섹션은<system.diagnostics>섹션 아래에 있으며, 최상위<configuration>섹션에 있습니다.섹션에
<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_ClickDefault Error: 2 : Error in the application.애플리케이션은 더 제한적인 필터링으로 인해 애플리케이션의 디버그 출력에 더 적은 정보를 씁니다.
Default Error 2 Error애플리케이션을 닫습니다.
배포 후 로그 설정을 변경하는 방법에 대한 자세한 내용은 애플리케이션 로그 작업을 참조하세요.
참고하십시오
.NET