추적 스위치
업데이트: 2007년 11월
추적 스위치를 사용하여 추적 출력을 활성화, 비활성화 및 필터링할 수 있습니다. 추적 스위치는 코드에 있는 개체이며 .config 파일을 통해 외부에서 구성할 수 있습니다. .NET Framework에서 제공하는 추적 스위치 유형은 세 가지로 BooleanSwitch 클래스, TraceSwitch 클래스 및 SourceSwitch 클래스입니다. BooleanSwitch 클래스는 다양한 추적 문을 활성화하거나 비활성화하는 토글 스위치로 사용됩니다. TraceSwitch 및 SourceSwitch 클래스를 사용하면 특정 추적 수준에 추적 스위치를 활성화하여 해당 수준 및 그 아래의 모든 수준에 대해 지정된 Trace 또는 TraceSource 메시지가 나타나도록 할 수 있습니다. 스위치를 비활성화하면 추적 메시지가 나타나지 않습니다. 다른 사용자가 개발한 스위치와 마찬가지로 이러한 모든 클래스는 추상(MustInherit) 클래스 Switch에서 파생됩니다.
추적 스위치는 정보를 필터링하는 데 유용합니다. 예를 들어, 데이터 액세스 모듈에서는 모든 추적 메시지가 표시되지만 나머지 응용 프로그램에서는 오류 메시지만 표시될 수도 있습니다. 이 경우에는 데이터 액세스 모듈에 대한 추적 스위치를 하나 사용하고 나머지 응용 프로그램에 대한 스위치를 하나 사용합니다. .config 파일을 사용하여 스위치를 적절한 설정으로 구성하면 받는 추적 메시지의 형식을 제어할 수 있습니다. 자세한 내용은 방법: 추적 스위치 만들기 및 초기화 및 방법: 추적 스위치 구성을 참조하십시오.
배포된 응용 프로그램은 일반적으로 스위치가 비활성화된 상태로 실행되므로 응용 프로그램이 실행되는 동안 화면에 나타나거나 로그 파일에 기록되는 수많은 관련 없는 추적 메시지를 사용자가 관찰할 필요가 없습니다. 응용 프로그램이 실행되는 동안 문제가 발생하면 응용 프로그램을 중지하고 스위치를 활성화한 다음 응용 프로그램을 다시 시작하면 됩니다. 그러면 추적 메시지가 표시됩니다.
스위치를 사용하려면 우선 BooleanSwitch 클래스, TraceSwitch 클래스 또는 개발자 정의 스위치 클래스로부터 스위치 개체를 만들어야 합니다. 개발자 정의 스위치 만들기에 대한 자세한 내용은 .NET Framework 참조의 Switch 클래스를 참조하십시오. 스위치 개체를 만든 다음에는 스위치 개체가 사용될 시기를 지정하는 구성 값을 설정합니다. 그런 다음 다양한 Trace 또는 Debug 추적 메서드에서 스위치 개체의 설정을 테스트합니다.
추적 수준
TraceSwitch를 사용할 때는 추가로 몇 가지를 더 고려해야 합니다. TraceSwitch 개체에는 스위치가 최소한 특정 수준으로 설정되는지의 여부를 나타내는 부울 값을 반환하는 네 가지 속성이 있습니다.
수준을 사용하면 문제를 해결하는 데 필요한 정보만 받도록 추적 정보의 양을 제한할 수 있습니다. 추적 스위치를 적절한 추적 수준으로 설정하고 구성하여 추적 출력의 상세 수준을 지정합니다. 오류 메시지, 경고 메시지, 정보 메시지, 자세한 추적 메시지 등을 받거나 메시지를 전혀 받지 않을 수도 있습니다.
각 수준과 연결할 메시지의 종류는 전적으로 사용자가 결정합니다. 일반적으로 추적 메시지의 내용은 각 수준에 연결한 내용에 따라 달라지지만 수준 간 차이는 사용자가 결정합니다. 예를 들어, 수준 3(Info)에서는 문제에 대한 자세한 설명을 제공하고 수준 1(Error)에서는 오류 참조 번호만 제공할 수도 있습니다. 응용 프로그램에 가장 적합한 구성표는 전적으로 사용자가 결정합니다.
이러한 속성은 TraceLevel 열거형 값의 1부터 4까지에 해당합니다. 다음 표에서는 TraceLevel 열거형의 수준과 값을 보여 줍니다.
열거형 값 |
정수 값 |
표시되거나 지정한 출력 대상에 기록되는 메시지 형식 |
---|---|---|
Off |
0 |
없음 |
Error |
1 |
오류 메시지만 |
경고 |
2 |
경고 메시지와 오류 메시지 |
Info |
3 |
정보 메시지, 경고 메시지 및 오류 메시지 |
Verbose |
4 |
자세한 메시지, 정보 메시지, 경고 메시지 및 오류 메시지 |
TraceSwitch 속성은 스위치의 최대 추적 수준을 나타냅니다. 즉, 지정된 수준뿐만 아니라 그보다 더 낮은 모든 수준에 대해 추적 정보가 작성됩니다. 예를 들어, TraceInfo가 true이면 TraceError 및 TraceWarning도 true이지만 TraceVerbose는 false가 될 수도 있습니다.
이러한 속성은 읽기 전용입니다. TraceLevel 속성이 설정되어 있으면 TraceSwitch 개체가 이러한 속성을 자동으로 설정합니다. 예를 들면 다음과 같습니다.
Dim myTraceSwitch As New TraceSwitch("SwitchOne", "The first switch")
myTraceSwitch.Level = TraceLevel.Info
' This message box displays true, becuase setting the level to
' TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(myTraceSwitch.TraceWarning.ToString())
' This messagebox displays false.
MessageBox.Show(myTraceSwitch.TraceVerbose.ToString())
System.Diagnostics.TraceSwitch myTraceSwitch =
new System.Diagnostics.TraceSwitch("SwitchOne", "The first switch");
myTraceSwitch.Level = System.Diagnostics.TraceLevel.Info;
// This message box displays true, becuase setting the level to
// TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(myTraceSwitch.TraceWarning.ToString());
// This message box displays false.
MessageBox.Show(myTraceSwitch.TraceVerbose.ToString());
System.Diagnostics.TraceSwitch myTraceSwitch =
new System.Diagnostics.TraceSwitch("SwitchOne", "The first switch");
myTraceSwitch.set_Level(System.Diagnostics.TraceLevel.Info);
// This message box displays true, becuase setting the level to
// TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(Convert.ToString(myTraceSwitch.get_TraceWarning()));
// This message box displays false.
MessageBox.Show(Convert.ToString(myTraceSwitch.get_TraceVerbose()));}
개발자 정의 스위치
BooleanSwitch 및 TraceSwitch를 제공하는 것과는 별도로 Switch 클래스에서 상속하고 기본 클래스 메서드를 사용자 지정 메서드로 재정의하여 사용자 스위치를 정의할 수 있습니다. 개발자 정의 스위치 만들기에 대한 자세한 내용은 .NET Framework 참조의 Switch 클래스를 참조하십시오.