C#如何实现跟踪
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章给大家分享的是有关C#如何实现跟踪的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、为什么需要用到跟踪技术:利用跟踪功能可以从正在运行的应用程序(发布后的程序)中查
千家信息网最后更新 2025年11月07日C#如何实现跟踪
这篇文章给大家分享的是有关C#如何实现跟踪的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、为什么需要用到跟踪技术:
利用跟踪功能可以从正在运行的应用程序(发布后的程序)中查看消息。我们把定义消息(不同级别的消息)的代码写在应用程序中,根据配置文件中配置,从而写入不同级别的消息。这些消息会写入到哪呢?vs默认是写入到输出窗口上的。输出窗口只能在调试状态下看的见。当我们跟踪发布后的程序那怎么办呢?我们需要在配置文件中定义一个侦听器,来接受从应用程序中写入的消息。下面来具体的介绍跟踪
二、跟踪体系架构:
①,跟踪源:跟踪信息的源头。例如:需要跟踪程序集或跟踪某个命名空间或某个类
②,开关:开关定义了要记录的信息级别。例如:可以请求错误信息或详细详细
③,侦听器:定义了写入跟踪消息的位置。
④,筛选器:筛选要记录的信息级别。例如:开关定义了Information级别,可以用过筛选只记录Error信息级别
需要引用命名空间:using System.Diagnostics;
三、参数对照表
| 侦听器 | 描述 | |
|---|---|---|
| System.Diagnostics.XmlWriterTraceListener | 写入Xml文件 | |
| System.Diagnostics.TextWriterTraceListener | 写入文本 | |
| System.Diagnostics.DelimitedListTraceListener | 写入带有分隔符的文本,配置文件属性( delimiter=":")设置分隔符号 | |
| System.Diagnostics.EventLogTraceListener | 写入事件日志 | |
| WebPageTraceListener | 写入web跟踪文件trace.axd中 | |
| 事件 | 描述 |
|---|---|
| Critical | 定义了致命错误或应用程序崩溃 |
| Error | 表示可恢复的错误 |
| Information | 信息性消息 |
| Verbose | 调试跟踪 |
| Warning | 非关键性问题(警告) |
| Transfer | 相关标识的更改 |
| Start | 逻辑操作的开始 |
| Stop | 逻辑操作的停止 |
| Suspand | 逻辑操作的挂起 |
| Resume | 逻辑操作的恢复 |
| 级别 | 描述 |
|---|---|
| ActivityTracing | 允许 Stop、Start、Suspend、Transfer 和 Resume 事件通过。 |
| All | 允许所有事件通过。 |
| Critical | 只允许 Critical 事件通过。 |
| Error | 允许 Critical 和 Error 事件通过。 |
| Information | 允许 Critical、Error、Warning 和 Information 事件通过。 |
| Off | 不允许任何事件通过。 |
| Verbose | 允许 Critical、Error、Warning、Information 和 Verbose 事件通过。 |
| Warning | 允许 Critical、Error 和 Warning 事件通过。 |
| 参数 | 描述 |
|---|---|
| Callstack | 写入调用堆栈 |
| DateTime | 写入日期和时间 |
| LogicalOperationStack | 写入逻辑操作堆栈 |
| None | 不写入如何操作 |
| ProcessId | 写入进程标识 |
| ThreadId | 写入线程标识 |
| Timestamp | 写入时间戳 |
四、配置跟踪文件:
五、在应用程序中写入消息代码
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Diagnostics;namespace TraceDome4{ class Program { //跟踪源 internal static TraceSource trace = new TraceSource("TraceDome4"); static void Main(string[] args) { //逻辑操作的开始 trace.TraceEvent(TraceEventType.Start, 0, "逻辑操作的开始"); //写入普通消息 trace.TraceInformation("写入消息"); //写入错误消息,根据TraceEventType枚举不同的消息级别 trace.TraceEvent(TraceEventType.Error, 0, "错误消息"); //逻辑操作的结束 trace.TraceEvent(TraceEventType.Stop, 0, "逻辑操作的结束"); //写入普通消息 trace.TraceInformation("写入消息"); } }}使用服务跟踪查看器,查看xml

五、在应用程序中写入消息代码(相关性)
使用相关性必须给跟踪数据选项设置Callstack,LogicalOperationStack
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Diagnostics;using System.Threading;namespace TraceDome4{ class Program { //跟踪源 internal static TraceSource trace = new TraceSource("TraceDome4"); static void Main(string[] args) { //设置一个活动ID Trace.CorrelationManager.ActivityId = Guid.NewGuid(); //逻辑操作的开始 trace.TraceEvent(TraceEventType.Start, 0, "逻辑操作的开始"); //启用线程上的逻辑操作 Trace.CorrelationManager.StartLogicalOperation("Main Operation"); //写入普通消息 trace.TraceInformation("写入消息"); //写入错误消息,根据TraceEventType枚举不同的消息级别 trace.TraceEvent(TraceEventType.Error, 0, "错误消息"); //开启一个线程 Thread th = new Thread(new ThreadStart(Simple)); th.Start(); //停止线程上的逻辑操作 Trace.CorrelationManager.StopLogicalOperation(); //逻辑操作的结束 trace.TraceEvent(TraceEventType.Stop, 0, "逻辑操作的结束"); } private static void Simple() { //设置一个活动ID Trace.CorrelationManager.ActivityId = Guid.NewGuid(); //启用线程上的逻辑操作 Trace.CorrelationManager.StartLogicalOperation("Simple Operation"); //写入警告消息 trace.TraceEvent(TraceEventType.Warning, 0, "警告消息"); //停止线程上的逻辑操作 Trace.CorrelationManager.StopLogicalOperation(); } }}感谢各位的阅读!关于"C#如何实现跟踪"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
消息
跟踪
逻辑
事件
级别
程序
错误
信息
应用程序
文件
线程
应用
侦听器
配置
不同
普通
代码
标识
输出
C#
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
管理员如何登录服务器
黄冈公文机器人rpa软件开发
电信重点行业网络安全投入
服务器质保和维保
爱思服务器的软件安全吗
网络安全主题安全教育
法治云课堂网络安全云提示
大学数据库技术与应用笔记
智能制造软件开发论文
数据库expdp导出某个表
sdp 收费模式网络安全
e肖哥网络技术
不同网段如何数据库同步
浙江中继转发服务器
深圳海道互联网科技有限公司
vs数据库文件路径
嘀嗒世界软件开发
互联网科技企业文化墙
c语言ado连接数据库
潮州软件开发培训机构
批量化数据库运维
数据库年龄对照表
徐州软件开发多少钱
形式化软件开发案例
总台网络安全知识科普题目
民用科技互联网
星战前夜数据库有什么用
云南软件开发公司
允许跨域服务器安全
网络安全检查汇报材料如何写