Иллюстрированный самоучитель по Architecture .NET

Использование переключателей для управления выводом. Класс TraceListener.

Можно проверить установленные значения переключателей перед тем, как заниматься выводом отладки и трассировки. Это выполняется с помощью условного оператора if или путем передачи значения переключателя в качестве параметра одному из методов классов Trace (Трассировка) или Debug (Отладка).

Trace::WriteLinelf(
TraceLevelSwitch › TraceError, "TraceError!"); Trace::WriteLinelf(
TraceLevelSwitch › TraceWarning, "TraceWarning!"}; Trace::WriteLinelf(
TraceLevelSwitch › TraceInfo, "InfoMessage!"); Trace::WriteLineIf(
TraceLevelSwitch › TraceVerbose, "VerboseMessage!");

Так как эти значения могут устанавливаться не только программой, можно решать, при каких обстоятельствах устанавливать конкретный уровень детализации вывода трассировки или отладки. Например, можно включить уровень TraceVerbose для вывода в том случае, если требуется действительно наивысший уровень диагностики, и установить уровень равным Off (Выключено) после того, как проблема будет локализована.

Класс TraceListener

Классы, производные от абстрактного класса TraceListener, занимаются назначениями вывода диагностики. Класс TextWriterTraceListener разработан для прямого вывода в TextWriter, Stream (Поток) или в FileStream. Поток Console::Out является примером часто используемого потока вывода. Класс EventLogTraceListener позволяет направлять вывод в журнал событий EventLog. Можно создать собственный журнал событий с помощью статического метода CreateEventSource класса EventLog. DefaultTraceListener посылает вывод в окно отладки.

По умолчанию вывод отладки можно увидеть в окне Output (Вывод) среды разработки Visual Studio .NET, а также с помощью утилит, таких как DBMon, которая включена в настоящий проект. При желании можно настроить место появления вывода с помощью собственного класса, управляемого из TraceListener.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.