我有一个wcf服务,有时会产生错误,例如“InnerException消息是'在对象图中可以序列化或反序列化的最大项数是'65536'”。我知道如何解决这个特殊问题,但现在我想创建一个只将错误(和严重错误)保存到日志中的跟踪。
问题是我的日志会保存所有内容(包括成功通话)或根本不保存任何内容。所以我的问题是,我的web.config有什么问题?
<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="System.ServiceModel" propagateActivity="true" switchValue="Error">
<listeners>
<add name="xml">
</add>
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="C:\mylog.svclog"
type="System.Diagnostics.XmlWriterTraceListener"
name="xml" />
</sharedListeners>
</system.diagnostics>
我尝试过使用switchValue的所有不同组合,但是没有一个给我我想要的结果(= catch错误,但没有成功调用)。
有没有人有想法?
答案 0 :(得分:1)
如果您需要仅限服务端日志记录,您可能需要查看可以放入服务类的IErrorHandler
界面。
此接口将公开两个方法
public bool HandleError(Exception error)
public void ProvideFault(Exception error, MessageVersion ver, ref Message msg)
这将允许您利用服务端发生的所有异常 - 将这些异常记录到您自己的日志文件中,您应该没问题。