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

    

posted on   血气方刚  阅读(1183)  评论(0编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示