Динамически назначить получателю сообщения журнала | MS Enterprise Library 5.0 logger - PullRequest
1 голос
/ 14 марта 2011

У меня WCF RESTful ws с включенным ведением журналов с использованием MS Enterprise Library 5.0. Ведение журнала работает нормально, однако мне нужно динамически назначать адрес электронной почты получателя сообщения журнала, то есть заданный идентификатором пользователя ws, если X вызывает мой ws, все должно быть зарегистрировано на x@x.com, если y вызывает ws, то журналы переходят к y @ y.com. Я знаю адреса электронной почты заранее.

Я думал о добавлении нового целевого прослушивателя категории + протоколирование для каждого потребителя и применении категории к LogEvent по идентификатору вызывающего во время выполнения, однако это было бы довольно большими издержками. Есть ли лучший способ сделать это? Я новичок в wcf и MSEL, так что, может быть, я что-то пропустил.

Спасибо

Ответы [ 2 ]

3 голосов
/ 14 декабря 2011

Наконец-то все заработало. Вы должны следовать этим шагам. Немного измененная версия предложения Rest Wing (так как EmailTraceListenerAssembler не может быть найдена):

  • Подкласс EmailTraceListener и переопределение одного или нескольких методов TraceData или Write.
  • Подкласс EmailTraceListenerData и метод переопределения GetCreationExpression(). В теле этого метода обязательно используйте подкласс, созданный на предыдущем шаге. См. Исходный код Enterprise Library.
  • В файле .config установите тип type и listenerDataType, чтобы использовать данные настраиваемого прослушивателя и настраиваемого прослушивателя.
2 голосов
/ 14 марта 2011

Самый чистый способ:

  1. Реализация пользовательских данных прослушивателя трассировки: просто наследуйте от EmailTraceListenerData.
  2. Реализация настраиваемого ассемблера прослушивателя трассировки: наследовать от EmailTraceListenerAssembler и переопределять метод Assemble.
  3. Реализация пользовательского прослушивателя трассировки: наследовать от EmailTraceListener и переопределять методы TraceData и Write.
  4. Укажите тип type и listenerDataType для использования пользовательских данных прослушивателя и пользовательских данных.
...