Поделиться через


TraceSwitch Класс

Определение

Предоставляет многоуровневый переключатель для управления выводом трассировки и отладки без повторной компиляции кода.

public ref class TraceSwitch : System::Diagnostics::Switch
public class TraceSwitch : System.Diagnostics.Switch
type TraceSwitch = class
    inherit Switch
Public Class TraceSwitch
Inherits Switch
Наследование
TraceSwitch

Примеры

В следующем примере кода создается новый TraceSwitch объект и используется параметр для определения того, следует ли выводить сообщения об ошибках. Параметр создается на уровне класса. MyMethod записывает первое сообщение об ошибке, Level если свойство имеет значение TraceLevel.Error или выше. Однако не записывает второе сообщение об ошибкеLevel, MyMethod если меньше 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

Комментарии

Для фильтрации сообщений на основе их важности можно использовать переключатель трассировки. Класс TraceSwitch предоставляет TraceErrorсвойства , TraceWarning, TraceInfoи TraceVerbose для проверки уровня коммутатора. Свойство Level получает или задает значение параметра TraceLevel.

Вы можете создать в коде TraceSwitch и задать уровень непосредственно для инструментирования определенного раздела кода.

Только в платформа .NET Framework приложениях можно также задать уровень TraceSwitch с помощью файла конфигурации приложения, а затем использовать настроенный TraceSwitch уровень в приложении. В файле конфигурации приложения можно добавить или удалить коммутатор, задать его значение или очистить все параметры, ранее заданные приложением. Файл конфигурации должен быть отформатирован, как показано в следующем примере:

<configuration>  
  <system.diagnostics>  
    <switches>  
      <add name="mySwitch" value="1" />  
    </switches>  
  </system.diagnostics>  
</configuration>  

В этом разделе конфигурации определяется TraceSwitch со значением mySwitchDisplayName , а Level для — значение 1, соответствующее значению TraceLevel.Errorперечисления .

Примечание

Можно также использовать текст, чтобы указать значение параметра. Например, true для BooleanSwitch, или текст, представляющий значение перечисления, например Error для TraceSwitch. Строка <add name="mySwitch" value="Error" /> эквивалентна <add name="mySwitch" value="1" />.

В приложении можно использовать настроенный уровень коммутатора, создав TraceSwitch с тем же именем, как показано в следующем примере:

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 .NET Core и .NET 5+ для нового параметра по умолчанию используется значение TraceLevel.Off.

В платформа .NET Framework приложениях свойство switch Level по умолчанию имеет значение, указанное в файле конфигурации. Если конструктор не TraceSwitch может найти начальные параметры коммутатора в файле конфигурации, Level для нового параметра по умолчанию используется значение TraceLevel.Off.

Для использования коммутатора необходимо включить трассировку или отладку. Следующий синтаксис зависит от компилятора. Если вы используете компиляторы, отличные от C# или Visual Basic, обратитесь к документации по компилятору.

  • Чтобы включить отладку /d:DEBUG в C#, добавьте флаг в командную строку компилятора при компиляции кода или в #define DEBUG начало файла. В Visual Basic добавьте /d:DEBUG=True флаг в командную строку компилятора.

  • Чтобы включить трассировку в C#, добавьте /d:TRACE флаг в командную строку компилятора при компиляции кода или в #define TRACE начало файла. В Visual Basic добавьте /d:TRACE=True флаг в командную строку компилятора.

Примечание

Эти параметры компилятора отладки и трассировки не требуются при использовании TraceSwitch класса в изоляции. Они требуются только в сочетании с Trace условно скомпилированными методами или Debug .

Дополнительные сведения об инструментировании приложения см. в разделе Debug и Trace. Дополнительные сведения о настройке и использовании параметров трассировки см. в разделе Параметры трассировки.

Примечание

Чтобы повысить производительность, можно создавать TraceSwitch члены static в классе.

Конструкторы

TraceSwitch(String, String)

Инициализирует новый экземпляр класса TraceSwitch, используя указанные отображаемое имя и описание.

TraceSwitch(String, String, String)

Инициализирует новый экземпляр класса TraceSwitch, используя указанные отображаемое имя, описание и значение по умолчанию переключателя.

Свойства

Attributes

Получает настраиваемые атрибуты переключателя, определенные в файле конфигурации приложения.

(Унаследовано от Switch)
DefaultValue

Возвращает значение по умолчанию, назначенное в конструкторе .

(Унаследовано от Switch)
Description

Получает описание переключателя.

(Унаследовано от Switch)
DisplayName

Получает имя, идентифицирующее переключатель.

(Унаследовано от Switch)
Level

Получает или задает уровень трассировки, которым определяются сообщения, активируемые переключателем.

SwitchSetting

Получает или задает текущее положение данного переключателя.

(Унаследовано от Switch)
TraceError

Получает значение, указывающее, активирует ли переключатель сообщения обработки ошибок.

TraceInfo

Получает значение, указывающее, активирует ли переключатель информационные сообщения.

TraceVerbose

Получает значение, указывающее, активирует ли переключатель все сообщения.

TraceWarning

Получает значение, указывающее, активирует ли переключатель предупреждающие сообщения.

Value

Получает или задает значение переключателя.

(Унаследовано от Switch)

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetSupportedAttributes()

Возвращает настраиваемые атрибуты, поддерживаемые переключателем.

(Унаследовано от Switch)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
OnSwitchSettingChanged()

Обновляет и исправляет уровень для данного переключателя.

OnValueChanged()

Присваивает свойству SwitchSetting целочисленный эквивалент свойства Value.

OnValueChanged()

Вызывается при изменении свойства Value.

(Унаследовано от Switch)
Refresh()

Обновляет данные конфигурации трассировки.

(Унаследовано от Switch)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к

См. также раздел