Export (0) Print
Expand All

TraceSwitch Class

Provides a multilevel switch to control tracing and debug output without recompiling your code.

For a list of all members of this type, see TraceSwitch Members.

System.Object
   System.Diagnostics.Switch
      System.Diagnostics.TraceSwitch

[Visual Basic]
Public Class TraceSwitch
   Inherits Switch
[C#]
public class TraceSwitch : Switch
[C++]
public __gc class TraceSwitch : public Switch
[JScript]
public class TraceSwitch extends Switch

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Remarks

You can use the trace levels to filter out messages based on their importance.

To set the level of your TraceSwitch, edit the configuration file that corresponds to the name of your application. Within this file, you can add a switch and set its value, remove a switch, or clear all the switches previously set by the application. The configuration file should be formatted like the following example:

<configuration>
    <system.diagnostics>
       <switches>
          <add name="mySwitch" value="0" />
          <add name="myNewSwitch" value="3" />
          <remove name="mySwitch" />
          <clear/>
       </switches>
    </system.diagnostics>
</configuration>

When the TraceSwitch constructor cannot find initial switch settings in the configuration file, the Level of the new switch is set to TraceLevel.Off.

The TraceSwitch class provides the TraceError, TraceWarning, TraceInfo, and TraceVerbose properties as an alternate way to test the level of the switch. The Level property gets or sets the switch's TraceLevel.

You must enable tracing or debugging to use a switch. The following syntax is compiler specific. If you use compilers other than C# or Visual Basic, refer to the documentation for your compiler.

  • To enable debugging in C#, add the /d:DEBUG flag to the compiler command line when you compile your code, or you can add #define DEBUG to the top of your file. In Visual Basic, add the /d:DEBUG=True flag to the compiler command line.
  • To enable tracing using in C#, add the /d:TRACE flag to the compiler command line when you compile your code, or add #define TRACE to the top of your file. In Visual Basic, add the /d:TRACE=True flag to the compiler command line.

For more information on instrumenting your application, see Debug and Trace.

Note   To improve performance, you can make TraceSwitch members static (Shared in Visual Basic) in your class.

Example

[Visual Basic, C#, C++] The following example creates a new TraceSwitch and uses the switch to determine whether to print error messages. The switch is created at the class level. MyMethod will write the first error message if the Level is set to TraceError or higher. However, MyMethod will not write the second error message when the Level is less than TraceVerbose.

[Visual Basic] 
' 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


[C#] 
//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();
 }
 

[C++] 
//Class-level declaration.
 /* Create a TraceSwitch to use in the entire application.*/
 static TraceSwitch* mySwitch = new TraceSwitch(S"General", S"Entire Application");
 
public:
 static void MyMethod() {
    // Write the message if the TraceSwitch level is set to Error or higher.
    if(mySwitch->TraceError)
       Console::WriteLine(S"My error message.");
 
    // Write the message if the TraceSwitch level is set to Verbose.
    if(mySwitch->TraceVerbose)
       Console::WriteLine(S"My second error message.");
 }
 
 static void main() {
    // Run the method that prints error messages based on the switch level.
    MyMethod();
 }
 

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Namespace: System.Diagnostics

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

Assembly: System (in System.dll)

See Also

TraceSwitch Members | System.Diagnostics Namespace | Switch | BooleanSwitch | TraceLevel | Debug | Trace

Show:
© 2014 Microsoft