이 연습에서는 My.Application.Log 개체에 대한 기본 로그 필터링을 변경하고 Log 개체에서 수신기로 전달될 정보와 수신기에서 기록할 정보를 제어하는 방법을 보여 줍니다.구성 정보는 응용 프로그램의 구성 파일에 저장되므로 로깅 동작은 응용 프로그램을 빌드한 후에도 변경할 수 있습니다.
시작
My.Application.Log에서 쓰는 각 메시지에는 심각도 수준이 연관되어 있으며 필터링 메커니즘에서는 이를 사용하여 로그 출력을 제어합니다.이 샘플 응용 프로그램에서는 My.Application.Log 메서드를 사용하여 여러 가지 심각도 수준의 로그 메시지를 씁니다.
위의 예제에서 WriteEntry 메서드에 대한 두 번째 호출과 WriteException 메서드에 대한 호출은 로그 출력을 생성하지만 WriteEntry 메서드에 대한 첫 번째와 마지막 호출은 로그 출력을 생성하지 않습니다.이것은 WriteEntry 및 WriteException의 심각도 수준이 "정보"와 "오류"여서 모두 My.Application.Log 개체의 기본 로그 필터링을 통과하기 때문입니다.하지만 심각도 수준이 "시작" 및 "중지"인 이벤트는 로그 출력을 생성하지 않습니다.
모든 My.Application.Log 수신기에 대한 필터링
My.Application.Log 개체에서는 이름이 DefaultSwitch인 SourceSwitch를 사용하여 WriteEntry 및 WriteException 메서드에서 로그 수신기로 전달할 메시지를 제어합니다.응용 프로그램의 구성 파일에 있는 DefaultSwitch의 값을 SourceLevels 열거형 값 중 하나로 설정하여 이를 구성할 수 있습니다.이 값의 기본값은 "정보"입니다.
이 표에서는 특정 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를 스위치 컬렉션에 추가하는 요소를 찾습니다.다음 요소와 비슷합니다.
이전 예제에서는 모든 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"/>
최상위 <configuration> 섹션의 <system.diagnostics> 섹션에서 <sharedListeners> 섹션을 찾습니다.