如何查找VS创建的Service Fabric应用的ETW Provider名称或GUID?
嘿Paul,我之前在开发Service Fabric应用时也碰到过诊断事件查看器失效的问题,给你几个靠谱的方法来找到正确的ETW Provider信息:
检查项目中的EventSource类
VS向导生成的Service Fabric服务项目里,默认会包含一个继承自EventSource的类(通常命名为[YourServiceName]EventSource.cs)。打开这个文件,你能看到类似这样的属性标记:[EventSource(Name = "MyApp-StatelessService1", Guid = "12345678-1234-1234-1234-1234567890AB")]这里的
Name和Guid就是你需要填入诊断事件查看器的ETW Provider信息,这是最直接准确的来源。通过Windows事件查看器提取
打开Windows事件查看器,导航到Applications and Services Logs > Microsoft > Service Fabric > Applications,找到你的应用对应的日志条目。右键点击任意一条事件,选择「事件属性」,切换到「详细信息」标签,在「系统」区域里就能找到Provider Name和Provider GUID,这是实际产生事件的提供者信息,绝对不会错。用PowerShell命令查询
打开PowerShell,运行以下命令来列出所有相关的ETW Providers:Get-WinEvent -ListProvider | Where-Object {$_.Name -like "*[YourAppOrServiceName]*"}把
[YourAppOrServiceName]替换成你的应用或服务名称,结果里会显示匹配的Provider名称和GUID。如果不确定名称,也可以先运行Get-WinEvent -ListProvider *ServiceFabric*来缩小范围。查看Service Fabric Explorer
打开开发集群的Service Fabric Explorer(默认地址是http://localhost:19080/Explorer),找到你的应用,进入具体服务的详情页面,在「诊断」相关的配置区域里,有时候会直接显示ETW Provider的信息,也能作为参考。
另外要注意:开发集群环境下,向导生成的调试参数可能是通用的默认值,但如果你的服务自定义了EventSource,一定要用代码里实际定义的Provider信息。如果还是不行,检查一下服务是否正确启用了事件日志功能,确保EventSource的方法被正确调用生成事件。
内容的提问来源于stack exchange,提问作者Paul




