【问题标题】:Remote Service Trace Listener while logging System.ServiceModel记录 System.ServiceModel 时的远程服务跟踪侦听器
【发布时间】:2014-12-10 17:00:10
【问题描述】:

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

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

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

在那之后,消息不断泛滥。请问有解决这个递归的想法吗?

【问题讨论】:

    标签: c# .net wcf trace


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-09-24
      • 2016-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多