我有一个WCF RESTful ws,使用MS Enterprise Library 5.0启用了日志记录。日志工作正常,但是,我需要动态分配日志消息收件人电子邮件地址,即由ws消费者身份设置,如果X调用我的ws,必须将事件记录到x@x.com,如果y调用ws,则日志转到y @ y.com。我提前知道电子邮件地址。
我考虑过为每个使用者添加一个新类别+日志记录目标侦听器,并在运行时通过调用者标识将类别应用于LogEvent,但这将是一个相当大的开销。有没有更好的方法呢? 我是wcf和MSEL的新手,所以也许我错过了一些东西。
由于
答案 0 :(得分:3)
终于搞定了。您需要按照以下步骤操作。 Rest Wing的提案略有修改版本(无法找到EmailTraceListenerAssembler
):
EmailTraceListener
并覆盖一个或多个TraceData
或Write
方法。EmailTraceListenerData
并覆盖GetCreationExpression()
方法。在此方法的主体中,请确保使用上一步中创建的子类。请参阅Enterprise Library的源代码。type
和listenerDataType
类型以使用自定义跟踪侦听器和自定义跟踪侦听器数据。答案 1 :(得分:2)
最干净的方法是:
EmailTraceListenerData
。EmailTraceListenerAssembler
继承并覆盖Assemble
方法。EmailTraceListener
继承并覆盖TraceData
和Write
方法。type
和listenerDataType
类型以使用自定义跟踪侦听器和自定义跟踪侦听器数据。