繁体   English   中英

记录System.ServiceModel时的远程服务跟踪侦听器

[英]Remote Service Trace Listener while logging System.ServiceModel

在我们的项目中,我们需要将客户端日志记录传输到服务器。 在服务器端,我们创建了一个WCF服务,该服务可以接收日志记录行并将其转储到平面文件/ xml文件/数据库中(不重要)。 在客户端,我们创建了一个RemoteTraceListener(具有配置端点的属性等)来调用该日志记录服务。 我们使用带有跟踪源(TraceData,TraceEvent)的标准.Net跟踪来创建日志记录。

现在,一切顺利,除非我们在客户端将RemoteTraceListener连接到“ System.ServiceModel”跟踪源以调查其他服务调用。 这显然是非常错误的。

  • MalfunctioningServiceX的System.ServiceModel跟踪源消息记录到RemoteTraceListener。
  • RemoteTraceListener建立Wcf连接以将日志记录行发送到日志记录服务
  • RemoteTraceListener的System.ServiceModel跟踪源消息记录到RemoteTraceListener。
  • ...

之后,这些消息只会不断泛滥。 请问有解决此递归的想法吗?

彻底搜索后,可能的解决方案将自己分为三类:

  • 不要使用WCF传输日志记录(使用使用另一种通信方法的日志记录框架)
  • 首先在本地记录日志,然后在传输日志文件时停止记录,或使用其他方法传输日志文件。
  • 使用另一个可执行文件或另一个AppDomain将传输与应用程序分开

我们选择遵循最后一种方法。 我们已经重写了TraceListener以便在内部写入队列。 内部启动第二个AppDomain,将日志出队并传输到服务器。 这可以在半天之内完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM