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


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 значение или более поздней версии. Однако не записывает второе сообщение об ошибке, MyMethod если значение Level меньше TraceLevel.Verbose.

//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свойства TraceWarningTraceInfoи TraceVerbose свойства для тестирования уровня коммутатора. Свойство Level получает или задает параметр.TraceLevel

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

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

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

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

Замечание

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

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

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, обратитесь к документации для компилятора.

  • Чтобы включить отладку в C#, добавьте /d:DEBUG флаг в командную строку компилятора при компиляции кода или добавьте #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, String)

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

TraceSwitch(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 свойства.

Refresh()

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

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

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

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

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

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