如何在Windows上访问Event Source提供程序日志?
如何访问.NET 8 WinUI3应用的EventSource日志?
问题背景
我有一个运行在Windows上、使用.NET 8的WinUI 3桌面应用,通过CreateDefaultBuilder配置了默认日志提供程序,按文档说明已包含Console、Debug、EventSource、EventLog(仅Windows)这几个提供程序。我的appsettings.json配置如下:
"Logging": { "LogLevel": { "Default": "Information", }, "EventLog": { "LogLevel": { "Default": "Information" } } }
应用中调用了logger.LogInformation("Hello world!");,目前各日志提供程序的输出情况:
- Console:暂不关注
- Debug:可在Visual Studio输出窗口查看
- EventSource:不知道如何访问,需了解方法
- EventLog:可在Windows事件查看器>Windows日志>应用程序中查看
文档说明:
EventSource提供程序写入名为Microsoft-Extensions-Logging的跨平台事件源,在Windows上,该提供程序使用ETW。
请问如何访问这些Event Source日志?我在事件查看器中未找到,能否使用性能监视器?
解决方案
方法1:通过事件查看器访问
EventSource(ETW)日志不在常规的Windows日志目录下,需按以下路径查找:
- 打开事件查看器,展开左侧应用程序和服务日志节点
- 展开Microsoft子节点,再找到Windows节点
- 定位到
Microsoft-Extensions-Logging日志项(若未显示,先运行应用触发日志写入,再刷新事件查看器) - 点击日志项即可查看
logger.LogInformation输出的内容
若仍找不到,可使用事件查看器的「筛选当前日志」功能,输入事件源名称Microsoft-Extensions-Logging精准定位。
方法2:使用性能监视器捕获
性能监视器可以实时监控ETW事件:
- 按下Win+R输入
perfmon,打开性能监视器 - 在左侧导航选择性能监视器,点击工具栏的绿色加号(添加计数器)
- 在弹出窗口中找到Event Tracing for Windows分类
- 展开后选择
Microsoft-Extensions-Logging事件源,勾选需要监控的事件级别(如Information),点击「添加」后确认 - 运行WinUI3应用触发日志,性能监视器会实时展示捕获到的EventSource日志
方法3:使用dotnet-trace命令行工具
用.NET官方工具可以捕获并导出日志:
- 安装工具:
dotnet tool install --global dotnet-trace - 打开任务管理器,找到应用的进程ID(PID)
- 执行捕获命令:
dotnet trace collect --providers Microsoft-Extensions-Logging -p <你的应用PID> - 停止捕获后会生成
.nettrace文件,用Visual Studio打开即可查看详细日志内容
内容的提问来源于stack exchange,提问作者Slion
相关产品推荐
相关产品推荐

