TraceSwitch TraceSwitch TraceSwitch TraceSwitch Class

定义

提供多级开关,用于控制跟踪和调试输出,而无需重新编译代码。Provides a multilevel switch to control tracing and debug output without recompiling your code.

public ref class TraceSwitch : System::Diagnostics::Switch
public class TraceSwitch : System.Diagnostics.Switch
type TraceSwitch = class
    inherit Switch
Public Class TraceSwitch
Inherits Switch
继承
TraceSwitchTraceSwitchTraceSwitchTraceSwitch

示例

下面的代码示例创建一个新TraceSwitch并使用该开关确定是否要打印的错误消息。The following code 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 如果将第一个错误消息Level属性设置为TraceLevel.Error或更高版本。MyMethod writes the first error message if the Level property is set to TraceLevel.Error or higher. 但是,MyMethod不会写入第二条错误消息,如果Level是小于TraceLevel.VerboseHowever, MyMethod does not write the second error message if the Level is less than TraceLevel.Verbose.

   // 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.*/
 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 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

注解

跟踪开关可用于筛选出消息根据其重要性。You can use a trace switch to filter out messages based on their importance. TraceSwitch类提供了TraceErrorTraceWarningTraceInfo,和TraceVerbose属性,以测试该开关的级别。The TraceSwitch class provides the TraceError, TraceWarning, TraceInfo, and TraceVerbose properties to test the level of the switch. Level属性获取或设置开关的TraceLevelThe Level property gets or sets the switch's TraceLevel.

您可以将级别设TraceSwitch通过应用程序配置文件,然后使用已配置的TraceSwitch级别应用程序中。You can set the level of a TraceSwitch through the application configuration file and then use the configured TraceSwitch level in your application. 另外,可以创建TraceSwitch中您的代码和集直接要检测特定的代码段的级别。Alternately, you can create a TraceSwitch in your code and set the level directly to instrument a specific section of code.

若要配置TraceSwitch,编辑你的应用程序的配置文件。To configure a TraceSwitch, edit the configuration file for your application. 在此文件中,可以添加或删除一个开关,设置开关的值,或清除所有交换机之前设置应用程序。In this file, you can add or remove a switch, set a switch's value, 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="1" />  
    </switches>  
  </system.diagnostics>  
</configuration>  

此配置节定义TraceSwitchDisplayName设置为mySwitch,和Level设置为 1,对应的枚举值TraceLevel.ErrorThis configuration section defines a TraceSwitch with the DisplayName set to mySwitch, and the Level set to 1, which corresponds to the enumeration value TraceLevel.Error.

备注

在 .NET Framework 2.0 版中,你可以使用文本指定开关值。In the .NET Framework version 2.0, you can use text to specify the value for a switch. 例如,true有关BooleanSwitch或表示一个枚举值,如文本ErrorTraceSwitchFor example, true for a BooleanSwitch or the text representing an enumeration value, such as Error for a TraceSwitch. <add name="mySwitch" value="Error" /> 等于 <add name="mySwitch" value="1" />The line <add name="mySwitch" value="Error" /> is equivalent to <add name="mySwitch" value="1" />.

在您的应用程序,可以通过创建使用已配置的交换机级别TraceSwitch具有相同的名称,如下面的示例中所示:In your application, you can use the configured switch level by creating a TraceSwitch with the same name, as shown in the following example:

private:
    static TraceSwitch^ appSwitch = gcnew TraceSwitch("mySwitch",
        "Switch in config file");

public:
    static void Main(array<String^>^ args)
    {
        //...
        Console::WriteLine("Trace switch {0} configured as {1}",
        appSwitch->DisplayName, appSwitch->Level.ToString());
        if (appSwitch->TraceError)
        {
            //...
        }
    }
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)
    {
        //...
    }
}
Private Shared appSwitch As new TraceSwitch("mySwitch", _
    "Switch in config file")

Public Shared Sub Main(args As String())
    '...
    Console.WriteLine("Trace switch {0} configured as {1}",
    appSwitch.DisplayName, appSwitch.Level.ToString())
    If appSwitch.TraceError = True  Then
        '...
    End If
End Sub

默认情况下,此开关Level属性使用配置文件中指定的值设置。By default, the switch Level property is set using the value specified in the configuration file. 如果TraceSwitch构造函数不能在配置文件中,查找初始开关设置Level的新开关默认为TraceLevel.OffIf the TraceSwitch constructor cannot find initial switch settings in the configuration file, the Level of the new switch defaults to TraceLevel.Off.

必须启用跟踪或调试要使用交换机。You must enable tracing or debugging to use a switch. 下面的语法是特定的编译器。The following syntax is compiler specific. 如果使用除 C# 或 Visual Basic 编译器,请参阅您的编译器的文档。If you use compilers other than C# or Visual Basic, refer to the documentation for your compiler.

  • 若要启用调试 C# 中,添加/d:DEBUG到编译器命令行编译代码,或添加时标志#define DEBUG到你的文件的顶部。To enable debugging in C#, add the /d:DEBUG flag to the compiler command line when you compile your code, or add #define DEBUG to the top of your file. 在 Visual Basic 中,添加/d:DEBUG=True到编译器命令行的标志。In Visual Basic, add the /d:DEBUG=True flag to the compiler command line.

  • 若要启用 C# 中的跟踪,请添加/d:TRACE到编译器命令行编译代码,或添加时标志#define TRACE到你的文件的顶部。To enable tracing 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. 在 Visual Basic 中,添加/d:TRACE=True到编译器命令行的标志。In Visual Basic, add the /d:TRACE=True flag to the compiler command line.

备注

这些调试和跟踪编译器开关时将不再需要使用TraceSwitch中隔离的类。These debug and trace compiler switches are not required when using the TraceSwitch class in isolation. 它们仅需要结合TraceDebug有条件地编译的方法。They are only required in conjunction with Trace or Debug methods that are conditionally compiled.

检测应用程序的详细信息,请参阅DebugTraceFor more information on instrumenting your application, see Debug and Trace. 有关配置和使用跟踪开关的详细信息,请参阅跟踪开关For more information about configuring and using trace switches, see Trace Switches.

备注

若要提高性能,可以使TraceSwitch成员static在类中。To improve performance, you can make TraceSwitch members static in your class.

构造函数

TraceSwitch(String, String) TraceSwitch(String, String) TraceSwitch(String, String) TraceSwitch(String, String)

使用指定的显示名称和说明初始化 TraceSwitch 类的新实例。Initializes a new instance of the TraceSwitch class, using the specified display name and description.

TraceSwitch(String, String, String) TraceSwitch(String, String, String) TraceSwitch(String, String, String) TraceSwitch(String, String, String)

使用开关的指定显示名称、说明和默认值来初始化 TraceSwitch 类的新实例。Initializes a new instance of the TraceSwitch class, using the specified display name, description, and default value for the switch.

属性

Attributes Attributes Attributes Attributes

获取在应用程序配置文件中定义的自定义开关特性。Gets the custom switch attributes defined in the application configuration file.

(Inherited from Switch)
Description Description Description Description

获取开关说明。Gets a description of the switch.

(Inherited from Switch)
DisplayName DisplayName DisplayName DisplayName

获取用于标识该开关的名称。Gets a name used to identify the switch.

(Inherited from Switch)
Level Level Level Level

获取或设置跟踪级别,它将确定开关所允许的消息。Gets or sets the trace level that determines the messages the switch allows.

SwitchSetting SwitchSetting SwitchSetting SwitchSetting

获取或设置此开关的当前设置。Gets or sets the current setting for this switch.

(Inherited from Switch)
TraceError TraceError TraceError TraceError

获取一个值,它指示开关是否允许错误处理消息。Gets a value indicating whether the switch allows error-handling messages.

TraceInfo TraceInfo TraceInfo TraceInfo

获取一个值,它指示开关是否允许信息性消息。Gets a value indicating whether the switch allows informational messages.

TraceVerbose TraceVerbose TraceVerbose TraceVerbose

获取一个值,它指示开关是否允许所有消息。Gets a value indicating whether the switch allows all messages.

TraceWarning TraceWarning TraceWarning TraceWarning

获取一个值,它指示开关是否允许警告消息。Gets a value indicating whether the switch allows warning messages.

Value Value Value Value

获取或设置开关的值。Gets or sets the value of the switch.

(Inherited from Switch)

方法

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

确定指定的对象是否等于当前对象。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

作为默认哈希函数。Serves as the default hash function.

(Inherited from Object)
GetSupportedAttributes() GetSupportedAttributes() GetSupportedAttributes() GetSupportedAttributes()

获取开关支持的自定义特性。Gets the custom attributes supported by the switch.

(Inherited from Switch)
GetType() GetType() GetType() GetType()

获取当前实例的 TypeGets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

创建当前 Object 的浅表副本。Creates a shallow copy of the current Object.

(Inherited from Object)
OnSwitchSettingChanged() OnSwitchSettingChanged() OnSwitchSettingChanged() OnSwitchSettingChanged()

更新并更正此开关的级别。Updates and corrects the level for this switch.

OnValueChanged() OnValueChanged() OnValueChanged() OnValueChanged()

SwitchSetting 属性设置为 Value 属性的整数等效值。Sets the SwitchSetting property to the integer equivalent of the Value property.

ToString() ToString() ToString() ToString()

返回表示当前对象的字符串。Returns a string that represents the current object.

(Inherited from Object)

适用于

另请参阅