一、概述

Debug 类用于开发阶段,Trace 类用于开发与测试阶段,大部分用于追踪程序代码的状态或行为。

Trace.WriteLine("Trace Information");
Trace.WriteLine("一般信息");
Trace.TraceInformation("告知性信息");
Trace.TraceWarning("警告信息");
Trace.TraceError("错误信息");

二、Assert 方法

Trace 与 Debug 类的Assert方法和单元测试的Assert方法非常类似,它会进行条件检查,如果条件为false时,除了会输出至输出窗口外,还会“弹出窗口”已明确显示信息(内部调用Fail方法)

static void Main(string[] args)
{
int UnitQty = 1000;
double UnitCost = 99;
DebugStatus(UnitQty, UnitCost);
Console.ReadLine();
}

static void DebugStatus(int UnitQty, double UnitCost)
{
Trace.WriteLine("一般信息");
Debug.WriteLine("总成本:" + (UnitQty * UnitCost));

Debug.WriteLineIf(UnitQty > 100, "库存>100本");
Debug.WriteLineIf(UnitQty < 100, "库存<100");
Trace.TraceError("错误信息");
Debug.Assert(!(UnitCost > 1000), "成本>1000 太贵了!");
Debug.Assert(!(UnitCost < 100), "成本<100 不合理!");
}

 三、Listeners 集合

  Trace 与 Debug 类默认会输出信息至Visual Studio 的“输出窗体”。也可以设置多个监听器(Listeners)来输出至各种媒体,文本文件,CSV,XML,事件查看器等等,默认使用DefaultTraceListener类。

  1.TextWriterTraceListener 可通过Web.Config和程序代码两种方式配置

    Web.config的配置方式:

<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<remove name="Default"/>
<add name="TraceListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="E:\TraceMessage.log"/>
</listeners>
</trace>
</system.diagnostics>

如果 autoflush="false",必须在程序中调用Flush方法输出至文本文件。

    程序代码的配置方式:

TextWriterTraceListener textListener = new TextWriterTraceListener(System.IO.File.CreateText("Debug.txt"));
Debug.Listeners.Add(textListener);

2.EventLogTraceListener

Web.config的配置方式:

<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<remove name="Default"/>
<add name="TraceListener" type="System.Diagnostics.EventLogTraceListener" initializeData="Application"/>
</listeners>
</trace>
</system.diagnostics>

程序代码的配置方式:

EventLogTraceListener eventLog = new EventLogTraceListener("Application");
Trace.Listeners.Add(eventLog);
Trace.TraceInformation("Send trace info test.");

    

10-14 10:36