TraceSwitch и SourceSwitch - какая разница? - PullRequest
9 голосов
/ 11 сентября 2010

Так что я, вероятно, здесь упускаю очевидное, но в чем разница между функциональными возможностями классов TraceSwitch и SourceSwitch?

Они оба дают идентичные краткие описания:

Предоставляет многоуровневый переключатель для управления трассировкой и отладкой вывода без перекомпиляции кода.

Являются ли разделы замечаний странным образом похожими на мои глаза. Может ли кто-нибудь уточнить разницу в их функциональности и вариантах использования?

(Для полноты картины я использую переключатели с моим TraceSource объектом, а не со старым статическим Trace классом, хотя я сомневаюсь, что это имеет большое значение.)

Ответы [ 3 ]

10 голосов
/ 11 сентября 2010

Разница в том, что TraceSwitch работает с Trace сообщениями, тогда как SourceSwitch работает с TraceSource сообщениями, которые связывают сообщения с их источником. Таким образом, с SourceSwitch вы можете настроить своих слушателей в зависимости от того, откуда пришли сообщения трассировки.

Я согласен, что документация не указывает на разницу напрямую, но покопайтесь в документации TraceSource класса, и вы найдете это:

Класс TraceSource идентифицируется как название источника, обычно название приложения. След сообщения, поступающие от конкретного компонент может быть инициирован конкретный источник трассировки, позволяющий всем сообщения от этого компонента быть легко идентифицированным.

Существует также пример, показывающий, как настроить SourceSwitch для отключения трассировки из источника трассировки.

7 голосов
/ 11 сентября 2010

(Более старый) TraceSwitch в основном является объектом TraceLevel, который должен использоваться в сочетании со статическим классом Trace.

(Более новый) TraceSource объединяет концепцию TraceLevel с реальными методами вывода.

Как следствие, в большом приложении вы можете использовать несколько переключателей TraceSwitch для настройки параметров трассировки для различных частей (GUI, DAL) программы, но все выходные данные будут отправлены одному и тому же TraceListener (s).

С TraceSource вы можете иметь независимые выходные каналы.И немного лучше API.

0 голосов
/ 25 октября 2010

Это объяснение различия между TraceLevel и SourceLevel может помочь:

System.Diagnostics скрыто SourceLevels

...