2009-02-04 3 views
1

У нас есть очень высокопроизводительное многопоточное приложение HTTP HTTP-обработчика и вы хотите включить ведение журнала трассировки для отладки. У меня есть несколько вопросов по этому поводу:Каков наилучший способ трассировки журнала обработчика HTTP HTTP?

  • Является ли трассировка лучом наилучшим способом включения/выключения регистрации?
  • Если уровень следа «выключен», будут ли индикаторы уровня следа влиять на производительность?
  • При использовании обработчика HTTP, как я могу просматривать журнал трассировки в реальном времени?
  • Является ли корпоративная библиотека излишней для этого? Предоставляет ли он какие-либо накладные расходы?

ответ

1

Enterprise Library кажется слишком сложным во многих случаях, но это может быть просто сложная конфигурацией.

log4net - это здорово. Способ, которым они обеспечивают опыт регистрации «без перфоманса», заключается в предикации вызовов регистратора от статической переменной readonly. Поскольку статическая переменная readonly устанавливается во время инициализации вашего типа, предположительно JIT может принять это во внимание и просто удалить вызов регистратору в этом случае. Обратите внимание, что это означает, что вы не можете перенастроить «на лету».

Другой вариант: Event Tracing for Windows (ETW). Производительность настраивается для использования ядра и предположительно выдающийся: «Мы достигли 20000 событий в секунду, используя только 5% загрузка процессора на Р3 500MHz»

(от http://blogs.msdn.com/ryanmy/archive/2005/05/27/422772.aspx)

Однако интеграция .NET добавит некоторые накладные расходы, а также интеграции .NET не очень приятно, либо, ИМО. С положительной стороны вы можете хорошо интегрироваться в систему журналов событий Windows, а администраторы системы включают в себя и выключать различные записи в процессе производства - без использования специализированных инструментов для вашего приложения.