TraceSwitch и SourceSwitch - какая разница?
Так что я, вероятно, здесь упускаю очевидное, но в чем разница между функциональностью TraceSwitch
а также SourceSwitch
классы?
Они оба дают идентичные краткие описания:
Предоставляет многоуровневый переключатель для контроля трассировки и отладки без перекомпиляции кода.
Являются ли разделы замечаний странным образом похожими на мои глаза. Может ли кто-нибудь прояснить разницу в их функциональности и вариантах использования?
(Для полноты картины я использую переключатели с моим TraceSource
объект, а не старая статика Trace
класс, хотя я сомневаюсь, что это имеет большое значение.)
3 ответа
Разница в том, что TraceSwitch
работает с Trace
сообщения тогда как SourceSwitch
работает с TraceSource
сообщения, которые связывают сообщения с их источником. Так с SourceSwitch
вы можете настроить своих слушателей в зависимости от того, откуда пришли сообщения трассировки.
Я согласен, что документация не указывает прямо на разницу, но копаться в связанных TraceSource
документация класса, и вы найдете это:
TraceSource
Класс идентифицируется по имени источника, как правило, по имени приложения. Сообщения трассировки, поступающие от конкретного компонента, могут инициироваться конкретным источником трассировки, что позволяет легко идентифицировать все сообщения, поступающие от этого компонента.
Существует также пример, показывающий, как настроить SourceSwitch
отключить трассировку от источника трассировки.
(Старый) TraceSwitch в основном является объектом TraceLevel, который будет использоваться в сочетании со статическим классом Trace.
(Более новый) TraceSource объединяет концепцию TraceLevel с реальными методами вывода.
Как следствие, в большом приложении вы можете использовать несколько переключателей TraceSwitch для настройки параметров Trace для разных частей (GUI, DAL) программы, но все выходные данные будут отправлены одному и тому же TraceListener(s).
С TraceSource вы можете иметь независимые выходные каналы. И немного лучше API.
Это объяснение различия между TraceLevel и SourceLevel может помочь: