【发布时间】: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();
}
只是它不起作用。 TraceListener 的 Close 方法似乎没有被调用。当托管 WCF 服务的应用程序关闭时,我应该怎么做才能确保我可以调用我的 Close 方法?
【问题讨论】:
标签: .net wcf logging tracelistener