如何使用自定义“tracellistener”记录断言消息

本文关键字:记录 断言 消息 tracellistener 何使用 自定义 | 更新日期: 2023-09-27 18:10:23

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

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

如何使用自定义“tracellistener”记录断言消息

您是否在发布模式下构建?调试。Assert为DEBUG符号定义了ConditionalAttribute,以便编译器在Release模式下删除调用。

调试。Assert调用跟踪侦听器上的Fail方法。这个实现正确吗?如果你没有覆盖它,那么它默认调用WriteLine,并加上"Fail: "