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

时间:2014-12-10 17:00:10

标签: c# .net wcf tracing

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

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

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

之后,这些消息一直在泛滥。请问解决这种递归的想法?

1 个答案:

答案 0 :(得分:0)

经过彻底搜索后,可能的解决方案分为三类:

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

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