如何使用自定义`TraceListener`记录断言消息

时间:2011-10-05 04:21:30

标签: c# logging trace assert

我已经实现了一个自定义TraceListener,它使用Win32 API函数Write记录发送到方法OutputDebugString的消息并将它们输出到Win32跟踪。每当我的应用程序使用System.Diagnostics.Debug.WriteSystem.Diagnostics.Trace.Write时,跟踪侦听器都会正确处理这些消息。

但是,如果我的应用程序遇到诸如System.Diagnostics.Debug.Assert之类的断言,我想拦截发送到调试输出的内容。不知何故,跟踪侦听器不会被assert生成的消息调用。这可能吗?或者我是否必须提供自己的Assert实现才能使其正常工作?

1 个答案:

答案 0 :(得分:3)

您是否在发布模式下构建? Debug.Assert具有定义的DEBUG符号的ConditionalAttribute,因此在发布模式下编译器将删除调用。

Debug.Assert在跟踪侦听器上调用Fail方法。这是否正确实施?如果你没有覆盖它,那么它默认调用前面带有“Fail:”的WriteLine。