动态分配日志消息收件人| MS Enterprise Library 5.0记录器

时间:2011-03-14 09:37:59

标签: .net wcf logging enterprise-library

我有一个WCF RESTful ws,使用MS Enterprise Library 5.0启用了日志记录。日志工作正常,但是,我需要动态分配日志消息收件人电子邮件地址,即由ws消费者身份设置,如果X调用我的ws,必须将事件记录到x@x.com,如果y调用ws,则日志转到y @ y.com。我提前知道电子邮件地址。

我考虑过为每个使用者添加一个新类别+日志记录目标侦听器,并在运行时通过调用者标识将类别应用于LogEvent,但这将是一个相当大的开销。有没有更好的方法呢? 我是wcf和MSEL的新手,所以也许我错过了一些东西。

由于

2 个答案:

答案 0 :(得分:3)

终于搞定了。您需要按照以下步骤操作。 Rest Wing的提案略有修改版本(无法找到EmailTraceListenerAssembler):

  • 子类EmailTraceListener并覆盖一个或多个TraceDataWrite方法。
  • 子类EmailTraceListenerData并覆盖GetCreationExpression()方法。在此方法的主体中,请确保使用上一步中创建的子类。请参阅Enterprise Library的源代码。
  • 在.config文件中,设置typelistenerDataType类型以使用自定义跟踪侦听器和自定义跟踪侦听器数据。

答案 1 :(得分:2)

最干净的方法是:

  1. 实现自定义跟踪侦听器数据:只需继承自EmailTraceListenerData
  2. 实现自定义跟踪侦听器汇编程序:从EmailTraceListenerAssembler继承并覆盖Assemble方法。
  3. 实施自定义跟踪侦听器:从EmailTraceListener继承并覆盖TraceDataWrite方法。
  4. 设置typelistenerDataType类型以使用自定义跟踪侦听器和自定义跟踪侦听器数据。