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 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器