* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Применение трассировочных переключателей
8 февраля 2009
Данные, генерируемые операторами Debug и Trace, интенсивно используются при отладке, но после компиляции и выпуска окончательной версии приложения трас- сировку включают только в особых случаях. Включать и выключать отображение данных, генерируемых операторами Trace, можно средствами трассировочных пе- реключателей. Трассировочными переключателями компилированного приложения управляют через его конфигурационный файл.
Библиотека базовых классов .NET Framework содержит два типа трассировоч- ных переключателей. Первый, BooleanSwitch, возвращает значение типа Boolean, что делает его похожим на обычный переключатель, не имеющий промежуточных по- ложений. TraceSwitch поддерживает параметр с пятью возможными значениями, по- зволяющий установить для переключателя нужный тип результата. Экземпляры классов BooleanSwitch и TraceSwitch создаются так же, как экземп- ляры любого другого класса. Конструкторы обоих типов переключателей требуют два параметра: DisplayName, определяющий имя переключателя, отображаемое в пользовательском интерфейсе, и Description, который задает краткое описание пе- реключателя, например: Visual Basic .NET Dim rriyBooleanSwitch As New BooleanSwitch("Switch1", "Controls Data Tracing") Dim nyTraceSwitch As New TraceSwitch("Switch2", "Controls Forml Tracing") Visual C# BooleanSwitch myBooleanSwitch = new BooleanSwitch("Switch1", "Controls Data Tracing"); TraceSwitch myTraceSwitch = new TraceSwitch("Switch2", "Controls Forml Tracing"); Класс TraceSwitch поддерживает свойство TraceSwitch. Level, значения которого представляют различные уровни ошибок. Это свойство способно принимать любое из пяти значений перечисления TraceLevel: • Trace Level. Off (целочисленное значение 0) деактивирует объект TraceSwiich; • Trace Level. Error (целочисленное значение 3) определяет вывод кратких сообще- ний об ошибках; • Trace Level. Warning (целочисленное значение 2) позволяет выводить сообщения об ошибках и предупреждения; • Trace Level. Info (целочисленное значение 3) разрешает выводить сообщения об ошибках, предупреждения и краткие информационные сообщения; • TraceLevel. Verbose (целочисленное значение 5) позволяет выводить сообщения об ошибках, предупреждения и подробные сведения об исполнении программы. У класса TraceSwitch также есть четыре доступных только для чтения свойства типа Boolean, представляющих четыре одноименных уровня трассировки: • TraceSwitch. TraceError • TraceSwitch. Trace Warning • TraceSwitch. Trace Info • TraceSwitch. Trace Verbose При установке свойства TraceSwitch.Level четыре перечисленных свойства авто- матически получают соответствующие значения. Например, если TraceSwitch.Level- Info, свойства TraceSwitch.Tracelnfo, TraceSwitch. TraceError и Trace Switch, Trace - Warning возвращают true. После определения значения Level свойства, соответству- ющие данному и более низким уровням возврата ошибок, будут возвращать true. С помощью трассировочных переключателей операторы Trace проверяют, сле- дует ли записывать трассировочные данные. Методы Trace.WritelfvA Trace. Write Line If позволяют проверить, активен ли переключатель трассировки, и узнать определяе- мый им уровень трассировки: Visual Basic .NET ' Этот пример предполагает наличие объектов BooleanSwitch и TraceSwitch ' с именами myBooleanSwitch и myTraceSwitch соответственно. Trace.WriteIf(myBooIeanSwitch.Enabled = True, "Error.") Trace.WriteLineIf(myTraceSwitch.TraceInfo = True, "Type Mismatch Error") Visual C# // Этот пример предполагает наличие объектов BooleanSwitch и TraceSwitch // с именами myBooleanSwitch и myTraceSwitch соответственно. Trace.WriteIf(myBooleanSwitch.Enabled == true, "Error"): Trace.WriteLinelf(myTraceSwitch.Tracelnfo == true, "Type Mismatch Error"); Обратите внимание: операторы Trace не подключаются к трассировочным пере- ключателям автоматически, за это целиком и полностью отвечает программист, то есть вы. При использовании методов, выполняющих безусловную запись, напри- мер Trace. Write или Trace. WriteLine, результаты трассировки записываются но всех случаях, независимо от состояния переключателей. > Как создать трассировочные переключатели и задействовать их в коде 1. Создайте экземпляр класса BooleanSwitch или TraceSwitch, передав конструктору параметры DisplayName и Description', 2. При необходимости проверяйте состояние переключателей с помощью методов Trace. Write!/w Trace. WriteLinelf.