Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Эта статья связана с .NET Framework. Он не применяется к более новым реализациям .NET, включая .NET 6 и более поздние версии.
Переключатели трассировки позволяют включать, отключать и фильтровать выходные данные трассировки. Они представляют собой объекты, которые существуют в коде и могут быть настроены внешне с помощью файла .config. В .NET Framework предусмотрены три типа коммутаторов трассировки: BooleanSwitch класс, TraceSwitch класс и SourceSwitch класс. Класс BooleanSwitch выступает в качестве переключателя, который включает или отключает различные операторы трассировки. Классы TraceSwitch и SourceSwitch позволяют включить переключатель трассировки для определенного уровня, чтобы сообщения Trace или TraceSource для этого уровня и всех более низких уровней отображались. Если отключить переключатель, сообщения трассировки не будут отображаться. Все эти классы являются производными от абстрактного класса MustInheritSwitch, как и любые пользовательские переключатели.
Переключатели трассировки могут быть полезны для фильтрации информации. Например, может возникнуть потребность просмотреть все сообщения трассировки в модуле доступа к данным, но только сообщения об ошибках в других частях приложения. В этом случае для модуля доступа к данным используется один коммутатор трассировки и один коммутатор для остальной части приложения. С помощью файла .config для настройки переключателей на нужные параметры можно было управлять типами получаемых сообщений трассировки. Дополнительные сведения см. в разделе "Практическое руководство. Создание, инициализация и настройка коммутаторов трассировки".
Как правило, развернутое приложение выполняется с отключенными переключателями, поэтому пользователям не нужно наблюдать много ненужных сообщений трассировки, отображаемых на экране или заполняющих файл журнала при запуске приложения. Если во время выполнения приложения возникает проблема, можно остановить приложение, включить переключатели и перезапустить приложение. Затем будут отображаться сообщения трассировки.
Чтобы использовать переключатель, необходимо сначала создать объект из класса BooleanSwitch, класса TraceSwitch или класса переключателя, определенного разработчиком. Дополнительные сведения о создании определяемых разработчиком переключателей см. Switch в справочных материалах по .NET Framework. Затем вы задаете значение конфигурации, указывающее, когда будет использоваться объект switch. Затем вы проверяете параметр объекта switch в различных методах трассировки (или отладки).
Уровни трассировки
При использовании TraceSwitch существуют дополнительные рекомендации. Объект TraceSwitch имеет четыре свойства, возвращающие булевские значения, указывающие, установлен ли переключатель как минимум на определенный уровень.
Уровни позволяют ограничить объем получаемых сведений трассировки только этой информацией, необходимой для решения проблемы. Вы указываете уровень детализации, который требуется в выходных данных трассировки, задав и настроив переключатели трассировки на соответствующий уровень трассировки. Вы можете получать сообщения об ошибках, предупреждения, информационные сообщения, подробные сообщения трассировки или вовсе не получать никаких сообщений.
Это полностью зависит от вас, чтобы решить, какое сообщение следует связать с каждым уровнем. Как правило, содержимое сообщений трассировки зависит от того, как вы связываете информацию с каждым уровнем, но именно вы устанавливаете различия между уровнями. Возможно, потребуется предоставить подробное описание проблемы на уровне 3 (сведения), например, но укажите только номер ссылки на ошибку на уровне 1 (ошибка). Это полностью зависит от вас, чтобы решить, какая схема лучше всего работает в приложении.
Эти свойства соответствуют значениям 1–4 перечисления TraceLevel . В следующей таблице перечислены уровни перечисления TraceLevel и их значения.
Перечисленное значение | Целочисленное значение | Тип отображаемого сообщения (или записи в указанный целевой объект вывода) |
---|---|---|
Выключено | 0 | Отсутствует |
Ошибка | 1 | Только сообщения об ошибках |
Предупреждение | 2 | Предупреждения и сообщения об ошибках |
Информация | 3 | Информационные сообщения, предупреждения и сообщения об ошибках |
Многословный | 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, because 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, because 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());
коммутаторы Developer-Defined
Помимо предоставления booleanSwitch и TraceSwitch, можно определить собственные коммутаторы, наследуя от класса Switch и переопределяя методы базового класса с настраиваемыми методами. Дополнительные сведения о создании определяемых разработчиком переключателей см. Switch в справочных материалах по .NET Framework.