【问题标题】:WCF logging: Why isn't Close being called for TraceListener?WCF 日志记录:为什么不为 TraceListener 调用 Close?
【发布时间】:2011-06-23 23:41:03
【问题描述】:

我正在尝试在传输级别将消息记录到我的 WCF 服务。我已成功按照在网上找到的一些说明进行操作,但现在我想实现自己的跟踪侦听器,以支持我们的内部日志记录解决方案。

我已经实现了一个跟踪侦听器,并使用托管 WCF 服务的 Windows 服务的 app.config 对其进行配置。以下是我用来配置日志记录的 XML。

<system.diagnostics>
  <sources>
    <source name="System.ServiceModel.MessageLogging">
      <listeners>
        <add name="messages" type="my.namespace.AdvancedLogTraceListener, Tools.Logging, Version=2.0.3.1, Culture=neutral" initializeData="C:\Logs" />
      </listeners>
    </source>
  </sources>
</system.diagnostics>

...

<diagnostics>
  <messageLogging logEntireMessage="true" logMalformedMessages="false" logMessagesAtServiceLevel="false" logMessagesAtTransportLevel="true">
  </messageLogging>
</diagnostics>

所有这些都运行良好。但是:我们的内部日志记录解决方案就像一个班级一样使用。该类启动一个后台线程来执行诸如日志清理、异步执行实际日志记录等操作。该类需要在关闭应用程序时调用名为Close的方法,从而停止内部处理并退出线程。

我的TraceListener 继承自的TraceListener 类实现了Close 方法。我已经按如下方式覆盖了这个方法:

public override void Close()
{
   base.Close();
   this.logFile.Close();
}

只是它不起作用。 TraceListenerClose 方法似乎没有被调用。当托管 WCF 服务的应用程序关闭时,我应该怎么做才能确保我可以调用我的 Close 方法?

【问题讨论】:

    标签: .net wcf logging tracelistener


    【解决方案1】:

    没关系,我找到了另一个实现消息检查器的解决方案。

    【讨论】:

    • 请在此处详细说明该解决方案,以便我们其他人可以看到您是如何解决问题的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 2014-02-26
    • 1970-01-01
    • 2016-08-02
    相关资源
    最近更新 更多