zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    mysql类似oracle rownum写法
    mysql派生查询必须有别名问题记录
    MySQL逻辑架构简介
    JSON转成List结构数据
    MySQL锁表查询SQL
    Http请求传json数据中文乱码问题
    异步调用导致的不同步问题
    oracle导入Excel表文本数据
    JSP页面的注释细节
    Oracle cursor学习笔记
  • 原文地址:https://www.cnblogs.com/wang726zq/p/Trace.html
Copyright © 2011-2022 走看看