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

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

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

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

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

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

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

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

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

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

Перечисляемое значение Целое значение Тип отображаемого сообщения (или записываемого в указанный целевой объект)
Выключено 0 None
Ошибка 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());  

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

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

См. также