【发布时间】:2013-01-30 17:00:57
【问题描述】:
- 有没有办法防止在 WCF 跟踪中记录某种类型的异常?
- 更好的是,有没有办法防止记录一个特定异常(我的意思是在特定代码行引发一个异常)?
说明:
我正在开发两个 Windows 服务 (A) 和 (B)。在服务 (A) 上,我在 app.config 文件中启用了 WCF 跟踪,如下所示:
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Warning"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\WCF-log.txt" />
</listeners>
</source>
</sources>
</system.diagnostics>
在此服务 (A) 上,我有一些代码用于检测其他服务 (B) 是否已关闭,如下所示:
try {
serviceB.Ping(); // Exception is thrown here when serviceB is down, and
// logged in the C:\WCF-log.txt file
} catch {
// Manage failed ping (log...)
}
现在,服务 (B) 有时会出现故障,这很正常。我希望那些引发的异常不要记录在 WCF 跟踪中,因为它们已经被我的应用程序处理过,我只想查看 C:\WCF-log.txt 文件如果有一个“真正的”问题。
【问题讨论】:
-
是的,您可以编写自定义过滤器,例如msdn.microsoft.com/en-us/library/… 并在过滤器中尝试查找跟踪中的内容(如堆栈跟踪中的值或特定错误)以过滤掉该值。但是我没有时间写一个工作示例。
-
@MatthewMartin 谢谢,Milan 在下面提供了一个代码示例。