У меня был тот же вопрос, так как я рассматриваю вопрос о том, как оставить многоуровневую трассировку в производстве в течение первых нескольких месяцев в многоуровневой системе.
Тест, который я провел, показывает, что это не так уж плохо для производительности. Вот последовательность звонков, которые я делаю:
UI Client (local pc)
-> WCF service 1 (hosted locally)
-> WCF service 2 (hosted locally)
-> webservice hosted by business partner (offsite)
Клиент пользовательского интерфейса, а также службы WCF 1 и WCF 2 отслеживаются с использованием System.Diagnostics.XmlWriterTraceListener.
Установлено на "ВСЕ", процесс в среднем составляет 530 мс .
При значении «ВЫКЛ» процесс в среднем составляет 400 мс .
Это довольно большой скачок, но фактическая обработка происходит тривиально, так что это почти ВСЕ при использовании сериализации и связи. Я подозреваю, что по мере того, как задачи становятся более ресурсоемкими, затраты на ведение журнала уменьшатся в процентах.
Если вы делаете большое количество вызовов и нуждаетесь в производительности, эти издержки могут быть неприемлемы. Но в моем случае вызовы будут нечастыми, поэтому небольшая дополнительная нагрузка будет стоить диагностического потенциала.