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.Verbose, 则不写入第二个错误消息。However, 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类提供TraceWarning、、和TraceInfo属性以测试开关的级别。 TraceError TraceVerboseThe TraceSwitch class provides the TraceError, TraceWarning, TraceInfo, and TraceVerbose properties to test the level of the switch. 属性获取或设置开关的TraceLevelLevelThe 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>  

此配置TraceSwitch节定义DisplayName了, 并将Level设置mySwitch为, 并将设置为 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 Error对于或表示枚举值TraceSwitch的文本 (例如)。 BooleanSwitchFor 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. 如果构造函数在配置文件中找不到初始开关设置Level , 则新开关的默认值TraceLevel.Off为。 TraceSwitchIf 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. 只需结合Trace有条件地编译的Debug或方法。They are only required in conjunction with Trace or Debug methods that are conditionally compiled.

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

备注

若要提高性能, 可以在TraceSwitchstatic中创建成员。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)

适用于

另请参阅