Debug和Trace都是调试类。
Debug类的方法只有DEBUG版中生效,而Trace的方法可以在DEBUG/RELEASE版本中生效。
一、Debug类
Debug类的控制台输出及断言Assert用法。
- public static void TestDebug()
- {
- Debug.Listeners.Add(new TextWriterTraceListener(Console.Out));
- Debug.AutoFlush = true;
- Debug.Indent();
- Debug.WriteLine("Debug WriteLine()");
- Console.WriteLine("Console.WriteLine()");
- Debug.WriteLine("Debug WriteLine2()");
- Debug.Unindent();
-
- /* Debug.Assert测试 */
- int data = 0;
- data--;
- Debug.Assert(data > 0, "Debug.Assert: data小于0是不允许的!");
- }
二、Trace类
Trace类的控制台、LOG文件输出及断言Assert用法
- public static void TestTrace()
- {
- /* 设置跟踪信息同时在控制台和日志文件中输出 */
- Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
- Trace.Listeners.Add(new TextWriterTraceListener("testtrace.log"));
- Trace.AutoFlush = true;
- /* Trace Indent and Unindent 通过缩进来区分WriteLine的输出 */
- Trace.Indent();
- Trace.WriteLine("Entering Main");
- Console.WriteLine("Hello World.");
- Trace.WriteLine("Exiting Main\n");
- Trace.Unindent();
- /* Trace.Assert测试 */
- int data = 0;
- data--;
- Trace.Assert(data > 0, "Trace.Assert: data小于0是不允许的!");
- }
三、Trace类的五级信息输出用法
由于Trace类可以在发布版本中起作用,所以,在做Trace输出信息的时候,可能有些信息是调试的时候需要,发布的时候又不需要了,那怎么才能保证信息不在发布的时候输出呢?.NET为我们提供了五个控制Trace的跟踪级别,使用它们不必重新编译,他们跟别是:
- public static void TestTraceWithSwitch()
- {
- Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
- TraceSwitch ts = new TraceSwitch("mySwitch", "in App.config file");
- Trace.WriteLineIf(ts.TraceError, "Error!!!");
- Trace.WriteLineIf(ts.TraceWarning, "Warning!!!");
- Trace.WriteLineIf(ts.TraceInfo, "Info!!!");
- Trace.WriteLineIf(ts.TraceVerbose, "Verbose!!!");
-
- Console.ReadKey();
- }
App.config文件
参考网址:
http://blog.csdn.net/yunhaic/article/details/4863322
https://msdn.microsoft.com/zh-cn/library/system.diagnostics.debug(v=vs.110).aspx
https://msdn.microsoft.com/zh-cn/library/zd83saa2(v=vs.100).aspx