WF4中的跟踪服务是通过跟踪参与者直接监听运行时放出的跟踪记录,并以根据选择的方式来处理它们。我们可以将日志记录到不同的媒介中,本文我们看看WF4中支持的ETW跟踪参与者。
Windows® 事件跟踪 (ETW) 是操作系统提供的一个高速通用的跟踪工具。ETW 使用内核中实现的缓冲和日志记录机制,提供对用户模式应用程序和内核模式设备驱动程序引发的事件的跟踪机制。此外,ETW 使您能够动态地启用和禁用日志记录,轻松地在实际生产环境下进行详细跟踪,而无需重新启动系统或重新启动应用程序。日志记录机制使用每处理器的缓冲区,由异步写线程将这些缓冲区写入磁盘。这样,大型服务器应用程序在写入事件时所受的干扰能够降至最小。
我们新建一个工作流项目,工作流的设计中我们随便加上几个Activity即可,如下:
下面我们来看看如何配置ETW跟踪,代码如下:
//ETW tracking setup
TrackingProfile trackingProfile = new TrackingProfile();
trackingProfile.Queries.Add(new WorkflowInstanceQuery
{
States = { "*"}
});
trackingProfile.Queries.Add(new ActivityStateQuery
{
States = { "*" }
});
trackingProfile.Queries.Add(new CustomTrackingQuery
{
ActivityName="*",
Name="*"
});
EtwTrackingParticipant etwTrackingParticipant = new EtwTrackingParticipant();
etwTrackingParticipant.TrackingProfile = trackingProfile;
在上面代码中我们可以选择记录那些跟踪信息,这个信息是通过跟踪配置文件来完成的,可以根据你的需求来定制,完成之后我们需要将etwTrackingParticipant以扩展点的方式添加到工作流中,代码如下:
AutoResetEvent autoResetEvent=new AutoResetEvent(false);
WorkflowApplication workflowApplication = new WorkflowApplication(new Workflow1());
workflowApplication.Completed = (arg) => { autoResetEvent.Set(); };
workflowApplication.Extensions.Add(etwTrackingParticipant);
workflowApplication.Run();
autoResetEvent.WaitOne();
之后我们运行工作流,结果很简单:
我们打开windows的事件查看器,切换到下图位置可以到有相关的信息记录在上面,这就是工作流运行后的信息:
我们可以看到工作流运行的详细信息如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?