Trace 与 Debug 类

Posted ifordream

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Trace 与 Debug 类相关的知识,希望对你有一定的参考价值。

一、概述

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.");

    




































以上是关于Trace 与 Debug 类的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio调试托管代码

Debug|Trace.WriteLine 来自 Visual Studio 中的 C# 插件 - 通过 ConsoleTraceListener 显示

如何将 System.Diagnostics.Trace 和 System.Diagnostics.Debug 消息记录到 NLog 文件?

当前上下文中不存在名称“trace”

使用bpf_printk,会将字符串输出到文件/sys/kernel/debug/tracing/trace_pipe

如何配置 Fluent NHibernate 以将查询输出到 Trace 或 Debug 而不是 Console?