本文转自:http://blog.sina.com.cn/s/blog_51a3c0380100b6pq.html~type=v5_one&label=rela_nextarticle

1、首先总结一下Trace与Debug类的特性:

    A、用法基本相同,只是Debug是在Debug本版本下使用,在Release版本下不会生成代码,而Trace在默认情况下是打开的,也就是说在Debug版本和Release版本下都会生成代码。

    B、都是sealed类,不能被继承,如果这两个类不能满足应用要求的话只能自己实现相关功能,重新编写所有方法,不能继承这两个类。

2、从特性上可以看出,该两个类用法基本相同,研究并掌握TraceDebug类,对各类软件调试、寻找Bug会有很大帮助。

3、跟踪是一种在应用程序运行时监视其执行情况的方式。当开发.NET应用程序时,可以在其中添加跟踪和调试检测功能,并且在开发应用程序时和部署应用程序后,都可以使用该检测功能。利用Trace和Debug类,可以将有关错误和应用程序执行的信息记录到日志、文本文件或其他设备中,以便在随后进行分析。   
    
    在应用程序中“插入检测点”对于分布式应用程序尤其有用,其方法是将跟踪语句放在代码中的关键位置。利用跟踪语句可以在应用程序中插入检测点,这样不仅可以在出错时显示信息,而且还可以显示相应的信息来监视应用程序的执行情况。

4、以下链接中提供了实现文件保存跟踪信息的FileStreamWithBackup类,可实现跟踪信息的保存、跟踪信息文件的文件大小控制、文件备份、加入跟踪信息对应的时间信息,可以实现对程序调试运行状态的更全面跟踪。

源码:http://www.codeproject.com/KB/dotnet/CustomNetTraceListeners/CustomNetTraceListeners_src.zip

下面是应用FileStreamWithBackup类的实例。

  /// <summary>
  /// The main entry point for the application.
  /// </summary>
  [STAThread]
  static void Main(string[] args)
  {
   FileStreamWithBackup fs = new FileStreamWithBackup("MyTrace.txt", 300, 10, FileMode.Append);
   fs.CanSplitData = false;
   TextWriterTraceListenerWithTime listener = new TextWriterTraceListenerWithTime(fs);
   Trace.AutoFlush = true;
   Trace.Listeners.Add(listener);
            Trace.Assert(true, "Assertion that should not appear");
            Trace.Assert(false, "Assertion that should appear in a trace file");
            Trace.WriteLine(123, "Category 1");
            Trace.WriteLineIf(true, "456", "Category 2");
            Trace.WriteLineIf(false, 789, "Category 3 (should not appear)");      
  }