WCF 异常记录

Posted

技术标签:

【中文标题】WCF 异常记录【英文标题】:WCF Exception Logging 【发布时间】:2014-05-01 20:55:18 【问题描述】:

是否可以从我的 WCF 服务记录 ThrowMaxReceivedMessageSizeExceeded 等异常。我知道可以在配置中增加消息大小,但我也希望它记录在我身边。我让 Log4Net 运行以捕获所有未处理的异常,但似乎这并没有被记录,所以可能已被处理。

【问题讨论】:

【参考方案1】:

您需要启用跟踪。可以发送到 Nlog。我的 XYZ.exe.config 有一个看起来像这样的部分:

<system.diagnostics>
    <sources>
        <source name="System.ServiceModel" switchValue="Error" propagateActivity="true" >
            <listeners>
                <add name="nlog"/>
            </listeners>
        </source>
        <!--source name="System.ServiceModel.MessageLogging">
            <listeners>
                <add name="nlog" />
            </listeners>
        </source-->
    </sources>
    <sharedListeners>
        <add name="nlog" type="NLog.NLogTraceListener, NLog" />
    </sharedListeners>
</system.diagnostics>

注意: 我在 XYZ.exe.config 中也有 NLog 配置!

编辑

我刚刚意识到您在谈论 log4net。不是 NLog。

如果您遵循 StephaneT 提供的最后一个 link 并实施 Log4netTraceListener,您应该也可以使用 XYZ.exe.config 解决方案。

【讨论】:

【参考方案2】:

默认情况下,WCF 使用 system.diagnostics 跟踪来记录异常。 见here和here和here

您可以按照this 问题中的说明将系统跟踪重定向到 log4net。

【讨论】:

以上是关于WCF 异常记录的主要内容,如果未能解决你的问题,请参考以下文章

继续Wcf记录点滴

WCF 异常处理

WCF 异常处理策略

如何防止 WCF 服务进入故障状态?

WCF 的 Completed 事件中的异常处理

由于未处理的异常,该进程被终止 - WCF 服务