关于.net的debug和trace随谈

80酷酷网    80kuku.com

  这两个功能主要用于对程序进行调试和跟踪,把一些相关的结果可以输出到指定的地方。在.NET的Debug模式下,Debug和Trace都进行输出,在Release模式下,默认只开Trace,可以通过设置将Trace关掉。

 主要就是两个类Trace和Debug的write,fail和assert来进行输出,Trace中还有tracewarning和traceerror两个选项,主要是用来输出警告和错误类型的消息,在事件查看器的消息类型中就能有所体现。默认的输出是调试的输出窗口,可以通过clear掉两个类的listener集合并添加新的listener来改变输出的位置。.NET默认提供的有TextWriter输入到流或者文件,EventLog事件查看器,XML中,当然也可以自己进行自定义。

  在执行完写入操作后,要记得调用Debug或者Trace的flush或者close否则写文件的消息则不会写入指定的文件,当然可以方便的设置它们的autoflush来确保每一次写操作的内容都写入了文件。

  listener还有自己的filter可以进行消息过滤,可以实现absctract类TraceListener来创建过滤类,然后赋给listener的相应属性。

  trace可以通过配置文件来实现控制输出的消息级别和是否输出消息,原本以为这会有什么巧妙的地方,也觉得很实用,最后闹了半天,其实还是需要自己在程序里面对BooleanSwitch或者TraceSwitch进行相应的if判断来确定输出消息。只是这两个类的实例可以通过它们的displayName在配置文件里进行配置,来决定程序是否输出消息或者输出什么等级的消息。也可以通过配置文件来清空listener并且添加新的listener。

  具体的参见msdn中:

  跟踪和调试设置架构

  如何:创建并初始化跟踪开关

  如何:配置跟踪开关

  BooleanSwitch和TraceSwitch的类的说明

  其实觉得debug跟trace功能还是很有用的,大概看看觉得也就是这样吧,主要就是当初在一本书中看到说用配置文件可以配置跟踪消息的输出级别等等觉得非常有用的功能,但那本书只是提了效果,但未谈具体应用,所以今天才研究了一下,结果发现那个还是得自己在程序里写if,觉得也不过就是如此了,不过这些功能还是蛮有用的在实际当中。

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: