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


Переключатели трассировки

Переключатели трассировки позволяют включать, отключать выходные данные трассировки и выполнять их фильтрацию. Они представляют собой объекты в коде, которые могут настраиваться извне с помощью файла CONFIG. В .NET Framework существует три типа переключателей трассировки: класс BooleanSwitch, класс TraceSwitch и класс SourceSwitch. Класс BooleanSwitch функционирует как переключатель, включая или отключая различные операторы трассировки. Классы TraceSwitch и SourceSwitch позволяют включать переключатель для определенного уровня трассировки, чтобы отображать сообщения Trace или TraceSource трассировки, определенные для данного уровня и для более низких уровней. Если этот переключатель отключен, сообщения трассировки отображаться не будут. Все эти классы выводятся из абстрактного (MustInherit) класса Switch, как и положено любым переключателям, которые разработаны пользователями.

Переключатели трассировки иногда удобно использовать для фильтрации данных. Например, можно выводить в модуле доступа к данным все сообщения трассировки, а в остальном приложении только сообщения об ошибках. В этом случае для модуля доступа к данным и для остальной части приложения используются два разных переключателя трассировки. Настроив соответствующие значения переключателей с помощью CONFIG-файла, можно управлять типами получаемых сообщений трассировки. Дополнительные сведения см. в разделах Практическое руководство. Создание и инициализация переключателей трассировки и Практическое руководство. Конфигурация переключателей трассировки.

Как правило, развертываемое приложение выполняется с отключенными переключателями, так что пользователям не приходится наблюдать за множеством несущественных сообщений трассировки, появляющихся на экране или заполняющих файл журнала по мере выполнения приложения. Если во время выполнения приложения возникает проблема, можно остановить приложение, включить переключатели и перезапустить приложение. В этом случае будут показаны сообщения трассировки.

Перед использованием переключателя необходимо в начале создать объект переключателя из класса BooleanSwitch,TraceSwitch или класса переключателя, определенного разработчиками. Дополнительные сведения о создании переключателей, определяемых разработчиками, см. в разделе Класс Switch справочника по платформе .NET Framework. Затем необходимо установить значение конфигурации, определяющее условия использования объекта переключателя. После этого следует проверить настройку объекта переключателя в различных методах трассировки класса Trace (или Debug).

Уровни трассировки

При использовании объекта TraceSwitch необходимо также учитывать следующие замечания. Объект TraceSwitch имеет четыре свойства, возвращающие логические (Boolean) значения, которые указывают, установлен ли переключатель хотя бы для отдельного уровня. Эти свойства перечислены ниже.

Уровни позволяют ограничить количество получаемых сведений трассировки только теми данными, которые необходимы для решения проблемы. Уровень детализации данных в выводе трассировки определяется установкой и настройкой переключателей трассировки для соответствующих уровней трассировки. Можно получать сообщения об ошибках, предупреждения, информационные сообщения, подробные сообщения трассировки или не получать никаких сообщений.

Разработчик самостоятельно определяет, какие типы сообщения будут связаны с каждым из уровней. Обычно содержание сообщений трассировки зависит от связи с конкретным уровнем, но разница между уровнями определяется разработчиком. Например, можно получить подробное описание проблемы на уровне 3 (Info) и получить только номер ссылки на ошибку на уровне 1 (Error). Разработчик самостоятельно определяет оптимальную схему для приложения.

Этим свойствам соответствуют значения 1-4 в перечислении TraceLevel. В следующей таблице приводится список уровней TraceLevel и их значений.

Перечисляемое значение

Целочисленное значение

Тип выводимого сообщения (или сообщения, записываемого в заданное конечное расположение)

Выкл.

0

Нет

Ошибка

1

Только сообщения об ошибках

Предупреждение

2

Предупреждения и сообщения об ошибках

Сведения

3

Информационные сообщения, предупреждения и сообщения об ошибках

Verbose

4

Подробные сообщения, информационные сообщения, предупреждения и сообщения об ошибках

Свойства TraceSwitch показывают максимальный уровень трассировки для переключателя. Это означает, что сведения трассировки записываются как для указанного уровня, так и для более низких уровней. Например, если для свойства TraceInfo установлено значение true, то свойства TraceError и TraceWarning также имеют значение true, но свойство TraceVerbose может иметь значение false.

Данные свойства доступны только для чтения. Объект TraceSwitch автоматически устанавливает их при настройке свойства TraceLevel. Пример.

Dim myTraceSwitch As New TraceSwitch("SwitchOne", "The first switch")
myTraceSwitch.Level = TraceLevel.Info
' This message box displays true, becuase setting the level to
' TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(myTraceSwitch.TraceWarning.ToString())
' This messagebox displays false.
MessageBox.Show(myTraceSwitch.TraceVerbose.ToString())
System.Diagnostics.TraceSwitch myTraceSwitch = 
   new System.Diagnostics.TraceSwitch("SwitchOne", "The first switch");
myTraceSwitch.Level = System.Diagnostics.TraceLevel.Info;
// This message box displays true, becuase setting the level to 
// TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(myTraceSwitch.TraceWarning.ToString());
// This message box displays false.
MessageBox.Show(myTraceSwitch.TraceVerbose.ToString());
System.Diagnostics.TraceSwitch myTraceSwitch =
   new System.Diagnostics.TraceSwitch("SwitchOne", "The first switch");
myTraceSwitch.set_Level(System.Diagnostics.TraceLevel.Info);
// This message box displays true, becuase setting the level to 
// TraceLevel.Info sets all lower levels to true as well.
MessageBox.Show(Convert.ToString(myTraceSwitch.get_TraceWarning()));
// This message box displays false.
MessageBox.Show(Convert.ToString(myTraceSwitch.get_TraceVerbose()));}

Переключатели, определяемые разработчиком

Помимо предоставления переключателей BooleanSwitch и TraceSwitch, допускается определение собственных переключателей, наследуемых от класса Switch и переопределяющих методы базового класса пользовательскими методами. Дополнительные сведения о создании переключателей, определяемых разработчиками, см. в разделе Класс Switch в справочнике по .NET Framework.

См. также

Задачи

Практическое руководство. Добавление операторов трассировки в код приложения

Практическое руководство. Конфигурация переключателей трассировки

Основные понятия

Прослушиватели трассировки

Введение. Подготовка к инструментированию и трассировка.

Другие ресурсы

Трассировка и оборудование приложений