Как бы вы построили HttpTraceListener? - PullRequest
2 голосов
/ 02 февраля 2009

Мое приложение использует объект Trace для регистрации информации. Информация записывается в файл с помощью TextWriterTraceListener, и она отлично работает. Тем не менее, я хотел бы добавить еще один TraceListerner, который будет записывать информацию в веб-службу. Другими словами, мне нужен HttpTraceListener. Более того, мне нужно что-то умное , я не хотел бы видеть HTTP-запрос для каждой записи журнала.

Как бы вы построили такую ​​вещь? Я знаю, что должен унаследовать TraceListener (документация несколько загадочная ...), но Кто-нибудь имеет идею, если HttpTraceListener уже существует ? Я не хочу изобретать велосипед ...

Спасибо!

1 Ответ

1 голос
/ 02 февраля 2009

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

Для документов MSDN на TraceListener (http://msdn.microsoft.com/en-us/library/system.diagnostics.tracelistener(VS.80).aspx)

"Унаследовать от этого класса для реализации пользовательского прослушивателя для классов Debug и Trace. Как минимум, вы должны реализовать методы Write и WriteLine. Кроме того, вы можете реализовать методы Fail, Close и Flush." ​​

Я бы начал с:

  1. Наследовать от TraceListener.
  2. Реализация методов Write / WriteLine
  3. Добавьте свою логику в поле «Написать», чтобы отправить запрос в веб-службу. WriteLine просто добавляет терминатор строки, если вы используете реализацию базового класса.
  4. Переопределить Fail / Close / Flush по мере необходимости для вашего приложения.

Эти 5 методов предоставят вам весь доступ, необходимый для реализации вашего слушателя.

...