我正在尝试在传输级别将消息记录到我的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();
}
只是它不起作用。似乎没有调用Close
的{{1}}方法。我应该怎么做才能确保在托管WCF服务的应用程序关闭时我可以调用我的TraceListener
方法?
答案 0 :(得分:0)
讷韦尔认为,我找到了另一种实施消息检查员的解决方案。