This article has been
excerpted from book "The Complete Visual C# Programmer's Guide" from the Authors
of C# Corner.
A trace switch is a way to control tracing and debugging output at runtime using
various settings. The Switch class is the parent of the BooleanSwitch and
TraceSwitch classes. Despite our being able to derive and create custom
switches, the BooleanSwitch and TraceSwitch classes will be satisfactory for our
debugging and tracing needs. Table 21.4 describes two members of the Switch
class.
Table 21.4: Switch Class Members
The TraceSwitch class provides per assembly, per module, or per class tracing.
This is more powerful and easier than the single-trace options because it lets
you specify various output options at once. Therefore, the extreme debugging or
tracing outputs do not overwhelm us with the various options that we have
specified when we don't want them. Table 21.5 describes members of the TraceSwitch class. The TraceSwitch constructor takes two parameters: the
descriptive display name ("descriptive trace switch name") and the switch name.
Table 21.5: TraceSwitch Class Members
We generally define the switches for the executable in the EXE.CONFIG
configuration file (see Listing 21.10). The application configuration file name
is <program>. Inside switch elements of the XML file, the "name" attribute
refers to the switch name and the "value" attribute is the numerical value the
corresponding trace level is set to. Note that we can also define the autoflush
and the indent size parameters in the configuration file.
Listing 21.10: Switches defined in the EXE.CONFIG file
<?xml
version="1.0"
encoding="UTF-8"
?>
<configuration>
<system.diagnostics>
<switches>
<add
name="Switch1"
value="3"
/>
<add
name="Switch2"
value="2"
/>
</switches>
<!—additional
diagnostics
-->
<trace
autoflush="true"
indentsize="3"
/>
</system.diagnostics>
</configuration>
Each assembly should have its own trace switch.
Possible TraceSwitch tracing levels are as follows:
- 0-None
- 1-Errors only; TraceError
- 2-Warning (warnings and errors);
TraceWarning
- 3-Info (warnings, errors, and
information); TraceInfo
- 4-Verbose (all kinds of traces);
TraceVerbose
An example is shown in Listing 21.11.
Listing 21.11: Using TraceSwitch
TraceSwitch MySwitch =
new MySwitch("Switch1", "my switch1 at Info mode");
// do you see which
one will run?
Trace.WriteLineIf(MySwitch.TraceError,
"Error tracing is on!");
Trace.WriteLineIf(MySwitch.TraceWarning,
"Warning tracing is on!");
Trace.WriteLineIf(MySwitch.TraceInfo,
"Info tracing is on!");
Trace.WriteLineIf(MySwitch.TraceVerbose,
"VerboseSwitching is on!");
Boolean switches can be used as a switch in your code to either turn on or turn
off the printing of a debug statement. Possible BooleanSwitch tracing levels are
as follows:
- 0-False; Disabled
- 1-True; Enabled
In Listing 21.12 we enable the Boolean switch
in the XML-formatted application configuration file.
Listing 21.12-Enabling a Boolean switch in the EXE.CONFIG
<?xml
version="1.0"
encoding="UTF-8"
?>
<configuration>
<system.diagnostics>
<switches>
<add
name="Switch3"
value="1"
/>
</switches>
<!—additional
diagnostic
settings
-->
<trace
autoflush="true"
indentsize="5"
/>
</system.diagnostics>
</configuration>
The BooleanSwitch example in Listing 21.13 is set to the Verbose mode.
Listing 21.13: Using BoolSwitch
BooleanSwitch boolSwitch =
new BooleanSwitch("Switch3",
"my boolean switch");
Debug.WriteLine("DEBUG");
Trace.WriteLine("TRACE");
Trace.WriteLineIf(boolSwitch.Enabled,
"boolSwitch");
We can also derive custom switch classes from the Switch class but generally do
not need to do so.
Conclusion
Hope this article would have helped you in understanding the Switch Class in C#. See other articles on the website on .NET and C#.
|
The Complete Visual
C# Programmer's Guide covers most of the major components that make
up C# and the .net environment. The book is geared toward the
intermediate programmer, but contains enough material to satisfy the
advanced developer. |