本文转自:
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、从特性上可以看出,该两个类用法基本相同,研究并掌握Trace与Debug类,对各类软件调试、寻找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)");
}