Использование переключателей для управления выводом. Класс 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.