使用 TraceDebug 和 TraceSource时,必须具有用于收集和记录发送的消息的机制。 跟踪消息可由侦听器接收。 侦听器的用途是收集、存储和路由跟踪消息。 侦听器会将跟踪输出定向到适当的目标,如日志、窗口或文本文件。

侦听器可供 DebugTrace 和 TraceSource 类使用,其中每个类都可以将其输出发送到多种侦听器对象。 以下是常用的预定义侦听器:

  • TextWriterTraceListener 将输出重定向到 TextWriter 类的实例或为 Stream 类的任何项。 它也可以写入到控制台或文件,因为它们是 Stream类。

  • EventLogTraceListener 将输出重定向到事件日志。

  • DefaultTraceListener 向 OutputDebugString 和 Debugger.Log 方法发出 Write和 WriteLine 消息。 在 Visual Studio 中,这会导致“输出”窗口中显示调试消息。 Fail和失败的 Assert 消息也发到 OutputDebugString Windows API 和 Debugger.Log 方法,同样将显示消息框。 此行为是 Debug 和 Trace 消息的默认行为,因为 DefaultTraceListener 自动包含在每个 Listeners 集合中,且是自动包含的唯一侦听器。

  • ConsoleTraceListener 将跟踪或调试输出定向到标准输出或标准错误流。

  • DelimitedListTraceListener 将跟踪或调试输出定向到文本编写器(如流编写器)或流(如文件流)。 跟踪输出采用由 Delimiter 属性指定的分隔符分隔的文本格式。

  • XmlWriterTraceListener 将跟踪或调试输出以 XML 编码数据的形式定向到 TextWriter 或 Stream,例如 FileStream。

如果你希望 DefaultTraceListener 以外的任何侦听器接收 DebugTrace 和 TraceSource 输出,则必须将其添加到 Listeners 集合。 有关详细信息,请参阅How to: Create and Initialize Trace Listeners和How to: Use TraceSource and Filters with Trace Listeners。 侦听器集合中的任何侦听器均从跟踪输出方法获取相同消息。 例如,假设你设置了两个侦听器:TextWriterTraceListener 和 EventLogTraceListener。 每个侦听器接收相同消息。 TextWriterTraceListener 将其输出定向到流,而 EventLogTraceListener 将其输出定向到事件日志。

以下示例演示如何将输出发送到 Listeners 集合。

C#
VB

// Use this example when debugging.
System.Diagnostics.Debug.WriteLine("Error in Widget 42");
// Use this example when tracing.
System.Diagnostics.Trace.WriteLine("Error in Widget 42");

调试和跟踪共享一个 Listeners 集合,因此,如果你在应用程序中将侦听器对象添加到 Debug.Listeners 集合,则它也将被添加到 Trace.Listeners 集合。

以下示例演示如何使用侦听器将跟踪信息发送到控制台:

C#
VB

System.Diagnostics.Trace.Listeners.Clear();
System.Diagnostics.Trace.Listeners.Add(new System.Diagnostics.TextWriterTraceListener(Console.Out));

开发人员定义的侦听器

可以通过从 TraceListener 基类继承并用自定义方法重写其方法来定义侦听器。 有关创建开发人员定义的侦听器的详细信息,请参阅 .NET Framework 参考中的 TraceListener。

追踪监听(TraceListener)相关推荐

  1. 【Android 电量优化】JobScheduler 相关源码分析 ( ConnectivityController 底层源码分析 | 构造函数 | 追踪任务更新 | 注册接收者监听连接变化 )

    文章目录 一.ConnectivityController 连接控制器引入 二.ConnectivityController 构造方法解析 ( 注册接收者 ) 三.mConnectivityRecei ...

  2. 基于目标追踪算法、web、gui开发的程序,可实时监控画面、检测目标、监听电脑配置

    基于目标追踪算法.web.gui开发的程序,可实时监控画面.检测目标.监听电脑配置,此项目由软件+网页设计而成,请看项目展示.

  3. linux conntrack命令 路由连接 跟踪表 显示删除监听记录

    conntrack命令可以显示,删除和更新跟踪表现有状态条目,还可以监听流事件 1.安装: yum install -y conntrack 2.使用: 查看conntrack表记录 conntrac ...

  4. vb+socket 编写入侵监听程序

    上网的时候很容易遭到探测,一般探测你个人的入侵者技术不会高明到哪里去.所以根本不能称上黑客,所以本文就用入侵者来代替.他们对普通网民的扫描可以是多端口单IP的扫描或者多IP单端口扫描.前者是通过一些I ...

  5. watch深度监听数组_vue watch普通监听和深度监听实例详解(数组和对象)

    vue watch普通监听和深度监听实例详解(数组和对象) 下面通过一段代码给大家介绍vue watch的普通监听和深度监听,具体代码如下所示: var vm=new Vue({ data:{ num ...

  6. python3 mysql报警日志_Python监听MySQL日志

    前言 在使用后台语言开发中,每天都是在与数据库打交道,而很多时候出问题都出在SQL语句上,而调试起来也不太方便,当然大佬例外哈,我等新手还真没办法在短时间内练习出一些技巧,我是用PHP的,之前在网上也 ...

  7. .NET Core开发实战(第12课:配置变更监听)--学习笔记

    12 | 配置变更监听:配置热更新能力的核心 这一节讲解如何使用代码来监视配置变化并做出一些动作 当我们需要追踪配置发生的变化,可以在变化发生时执行一些特定的操作 配置主要提供了一个 GetReloa ...

  8. Vue 页面如何利用生命周期函数监听用户预览时长

    最近的业务中涉及到这样一个需求,在线培训的系统需要知道用户对某个在线预览的页面追踪用户的预览时长.初步我们首先想到借助 Vue 页面的生命周期函数 mounted 和 destroyed,分别在其中加 ...

  9. Vue 页面如何监听用户预览时间

    最近的业务中涉及到这样一个需求,在线培训的系统需要知道用户对某个在线预览的页面追踪用户的预览时长.初步我们首先想到借助 Vue 页面的生命周期函数 mounted 和 destroyed,分别在其中加 ...

最新文章

  1. FPGA 中的latch 锁存器
  2. QueryList的使用
  3. 为js和css文件自动添加版本号
  4. HDU 2079-课程时间(生成函数)
  5. 加载dict_PyTorch 7.保存和加载pytorch模型的两种方法
  6. 重磅推荐 | 11个名企NLP项目,硅谷科学家帮你转型
  7. python个人网站系统_利用基于Python的Pelican打造一个自己的个人纯静态网站
  8. 数学建模学习笔记(四)——拟合算法
  9. jquery 随楼层滚动导航激活状态改变特效
  10. powerdesigner简单使用
  11. fgets和fgetl有什么区别
  12. 命令行Terminal增加proxy开关
  13. a3图纸标题栏尺寸标准_求标准CAD图纸(A0、A1、A2、A3、A4)图框(外框、内框)、标题栏及明细栏大小样式字体是多大?...
  14. 密西根州立大学计算机排名,美国密西根州立大学 Alex X. Liu 教授来我校作学术讲座...
  15. 云上解锁Web3.0 阿里云XR平台助力彼真科技呈现沉浸式演唱会
  16. 雷顿学院与与河北各地高校签署战略合作伙伴关系
  17. (转)Unity 之 UGUI 小总结
  18. 计算机专业铁路局面试题目,铁路局招聘面试
  19. 世卫批准强生新冠疫苗紧急使用权;美洲邮轮业停摆一年后将复航;IMAX将入驻上海多个商业地标 | 美通企业周刊...
  20. UE4 奇怪灯光阴影

热门文章

  1. 利用计算机打字教学设计,第6课 争当打字小能手教学设计
  2. 【英语学习】【WOTD】 putsch 释义/词源/示例
  3. 【英语学习】【WOTD】ratiocination 释义/词源/示例
  4. tp5中php正则怎么写,详解tp5中phpmailer的使用
  5. centos php mcrypt_面试经常问你什么是PHP垃圾回收机制?
  6. MySQL数据的重复处理
  7. python读取枚举_在python中枚举(enumerate in python)
  8. 法向量 点云pca_CVPR 2019 | 旷视研究院Oral论文提出GeoNet:基于测地距离的点云分析深度网络...
  9. 如何把测试库的统计信息导入到生产库
  10. 介绍一下关于Spring Cloud Stream