c# Trace.Assert用法

注意:

以Trace类做示例,但Debug类也通用。

Trace.Listeners默认是一个System.Diagnostics.DefaultTraceListener类型,这个类型的侦听器会在断言时弹出一个对话框,如下代码:

// using System.Diagnostics;

Trace.Assert(false,"hehe");

执行后会出现如下对话框:

hehe

方法一就是清空Trace的默认侦听器,然后加入自己的侦听器,比如TextWriterTraceListener:

后台:

using System.Diagnostics;
namespace test_trace{
 public class test{
public void main(){
    Trace.Listeners.Clear();

   //自动清空缓冲(即时写入)

   Trace.AutoFlush=true;

     Trace.Listeners.Add(newTextWriterTraceListener("app.log"));

     Trace.Assert(false,"hehe");
}
}

第二种方法就是通过修改应用程序集的配置文件(app.config)

<configuration>

<system.diagnostics>

<trace autoflush="true">

<listeners>

<!--删除默认侦听器-->

<clear/>

<!--加入侦听器-->

<add name="listener1" type="System.Diagnostics.TextWriterTraceListener" initializeData="app.log"/>

</listeners>

</trace>

</system.diagnostics>

</configuration>

第三种方法也是在配置文件里,其实<system.diagnostics>元素下有直接对断言的支持,使用<assert>元素。assertuienabled属性代表是否显示断言对话框,而logfilename代表记录文件的位置。

<configuration>

<system.diagnostics>

<assert assertuienabled="false" logfilename="app.log"/>

</system.diagnostics>

</configuration>

最后需要注意的是第三种方法输出的记录最详细,而且不需要设置Trace类的属性。第一行的”hehe”是前两种方法的输出。而后面的文字全是第三种方法的输出。

Fail: hehe

---- DEBUG ASSERTION FAILED ----

---- Assert Short Message ----

hehe

---- Assert Long Message ----

at Program.Main() e:\users\mgen\documents\visual studio 2010\Projects\Mgen\Mgen\Program.cs(11)

原文地址:https://www.cnblogs.com/wang726zq/p/Trace.html