TraceSwitch 클래스
코드를 다시 컴파일하지 않고 추적 및 디버그 출력을 제어하는 여러 수준의 스위치를 제공합니다.
네임스페이스: System.Diagnostics
어셈블리: System(system.dll)
구문
‘선언
Public Class TraceSwitch
Inherits Switch
‘사용 방법
Dim instance As TraceSwitch
public class TraceSwitch : Switch
public ref class TraceSwitch : public Switch
public class TraceSwitch extends Switch
public class TraceSwitch extends Switch
설명
추적 스위치를 사용하여 메시지를 중요도에 따라 필터링할 수 있습니다. TraceSwitch 클래스는 스위치의 수준을 테스트하는 TraceError, TraceWarning, TraceInfo 및 TraceVerbose 속성을 제공합니다. Level 속성은 스위치의 TraceLevel을 가져오거나 설정합니다.
응용 프로그램 구성 파일을 통해 TraceSwitch의 수준을 설정한 다음 응용 프로그램에서 구성된 TraceSwitch 수준을 사용할 수 있습니다. 또는 코드에서 TraceSwitch를 만들고 수준을 직접 설정하여 코드의 특정 섹션을 조정할 수 있습니다.
TraceSwitch를 구성하려면 응용 프로그램의 이름에 해당하는 구성 파일을 편집합니다. 이 파일에서 스위치를 추가 또는 제거하거나, 스위치 값을 설정하거나, 응용 프로그램에서 이전에 설정한 모든 스위치를 지울 수 있습니다. 구성 파일의 형식은 다음 예제와 같아야 합니다.
<configuration>
<system.diagnostics>
<switches>
<add name="mySwitch" value="1" />
</switches>
</system.diagnostics>
</configuration>
이 구성 섹션에서는 DisplayName이 mySwitch
로 설정되고 Level이 열거형 값 TraceLevel.Error에 해당하는 1로 설정된 TraceSwitch를 정의합니다. 응용 프로그램에서 다음 예제와 같이 동일한 이름의 TraceSwitch를 만들어서 구성된 스위치 수준을 사용할 수 있습니다.
Private Shared appSwitch As New TraceSwitch("mySwitch", _
"Switch in config file")
Public Shared Sub Main(ByVal CmdArgs() As String)
'...
Console.WriteLine("Trace switch {0} configured as {1}", _
appSwitch.DisplayName, appSwitch.Level.ToString())
If appSwitch.TraceError Then
'...
End If
End Sub
private static TraceSwitch appSwitch = new TraceSwitch("mySwitch",
"Switch in config file");
public static void Main(string[] args)
{
//...
Console.WriteLine("Trace switch {0} configured as {1}",
appSwitch.DisplayName, appSwitch.Level.ToString());
if (appSwitch.TraceError)
{
//...
}
}
기본적으로 스위치 Level 속성은 구성 파일에 지정된 값을 사용하여 설정됩니다. TraceSwitch 생성자가 구성 파일에서 초기 스위치 설정을 찾지 못할 경우 기본적으로 새 스위치의 Level은 TraceLevel.Off로 설정됩니다.
스위치를 사용하려면 추적 또는 디버깅 기능을 활성화해야 합니다. 다음 구문은 컴파일러 관련 구문입니다. C# 또는 Visual Basic 이외의 컴파일러를 사용하는 경우 해당 컴파일러의 설명서를 참조하십시오.
C#에서 디버깅을 활성화하려면 코드를 컴파일할 때 /d:DEBUG 플래그를 컴파일러 명령줄에 추가하거나, #define DEBUG를 파일 맨 위에 추가합니다. Visual Basic을 사용하는 경우 컴파일러 명령줄에 /d:DEBUG=True 플래그를 추가합니다.
C#에서 추적을 활성화하려면 코드를 컴파일할 때 /d:TRACE 플래그를 컴파일러 명령줄에 추가하거나 #define TRACE를 파일 맨 위에 추가합니다. Visual Basic을 사용하는 경우 컴파일러 명령줄에 /d:TRACE=True 플래그를 추가합니다.
참고
이러한 디버그 및 추적 컴파일러 스위치는 TraceSwitch 클래스만 사용할 때는 필요하지 않으며 조건부로 컴파일되는 Trace 또는 Debug 메서드와 함께 사용될 때만 필요합니다.
응용 프로그램 구현에 대한 자세한 내용은 Debug 및 Trace를 참조하십시오. 추적 스위치 구성 및 사용에 대한 자세한 내용은 추적 스위치를 참조하십시오.
참고
성능을 향상시키려면 클래스에서 TraceSwitch 멤버를 static으로 설정합니다.
항목 | 위치 |
---|---|
방법: 추적 스위치 구성 | .NET Framework: Debugging |
방법: 추적 스위치 만들기 및 초기화 | .NET Framework: Debugging |
방법: 추적 스위치 구성 | .NET Framework: 디버깅 |
방법: 추적 스위치 만들기 및 초기화 | .NET Framework: 디버깅 |
예제
다음 코드 예제에서는 새 TraceSwitch를 만들고 해당 스위치를 사용하여 오류 메시지의 출력 여부를 결정합니다. 클래스 수준에서 스위치가 만들어집니다. MyMethod
에서는 Level 속성이 TraceLevel.Error 이상으로 설정된 경우 첫 번째 오류 메시지를 씁니다. 그러나 Level이 TraceLevel.Verbose보다 작은 경우에는 MyMethod
에서 두 번째 오류 메시지를 쓰지 않습니다.
' Class-level declaration.
' Create a TraceSwitch to use in the entire application.
Private Shared mySwitch As New TraceSwitch("General", "Entire Application")
Public Shared Sub MyMethod()
' Write the message if the TraceSwitch level is set to Error or higher.
If mySwitch.TraceError Then
Console.WriteLine("My error message.")
End If
' Write the message if the TraceSwitch level is set to Verbose.
If mySwitch.TraceVerbose Then
Console.WriteLine("My second error message.")
End If
End Sub
Public Shared Sub Main()
' Run the method that prints error messages based on the switch level.
MyMethod()
End Sub
//Class-level declaration.
/* Create a TraceSwitch to use in the entire application.*/
static TraceSwitch mySwitch = new TraceSwitch("General", "Entire Application");
static public void MyMethod() {
// Write the message if the TraceSwitch level is set to Error or higher.
if(mySwitch.TraceError)
Console.WriteLine("My error message.");
// Write the message if the TraceSwitch level is set to Verbose.
if(mySwitch.TraceVerbose)
Console.WriteLine("My second error message.");
}
public static void Main(string[] args) {
// Run the method that prints error messages based on the switch level.
MyMethod();
}
// Class-level declaration.
/* Create a TraceSwitch to use in the entire application.*/
private:
static TraceSwitch^ mySwitch = gcnew TraceSwitch( "General", "Entire Application" );
public:
static void MyMethod()
{
// Write the message if the TraceSwitch level is set to Error or higher.
if ( mySwitch->TraceError )
Console::WriteLine( "My error message." );
// Write the message if the TraceSwitch level is set to Verbose.
if ( mySwitch->TraceVerbose )
Console::WriteLine( "My second error message." );
}
static void main()
{
// Run the method that prints error messages based on the switch level.
MyMethod();
}
// Class-level declaration.
/* Create a TraceSwitch to use in the entire application.
*/
private static TraceSwitch mySwitch =
new TraceSwitch("General", "Entire Application");
public static void MyMethod()
{
//Write the message if the TraceSwitch level is set to Error or higher.
if (mySwitch.get_TraceError()) {
Console.WriteLine("My error message.");
}
// Write the message if the TraceSwitch level is set to Verbose.
if (mySwitch.get_TraceVerbose()) {
Console.WriteLine("My second error message.");
}
} //MyMethod
public static void main(String[] args)
{
// Run the method that prints error messages based on the switch level.
MyMethod();
} //main
상속 계층 구조
System.Object
System.Diagnostics.Switch
System.Diagnostics.TraceSwitch
스레드로부터의 안전성
이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.
플랫폼
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.
버전 정보
.NET Framework
2.0, 1.1, 1.0에서 지원
참고 항목
참조
TraceSwitch 멤버
System.Diagnostics 네임스페이스
Switch 클래스
BooleanSwitch 클래스
TraceLevel 열거형
Debug 클래스
Trace 클래스