如何在Windows IoT中记录事件?
用于Windows IoT的WebUI(如Raspberry PI上所示)具有以下事件跟踪屏幕:
如何从uwp程序写入事件日志,然后检查那里写的是什么?
这个答案 (与Windows IoT无关)表明您需要使用标准的System.Diagnostics.Tracing类。 此答案所指的示例是演示记录到文件 。 在登录到内置设施(例如ETW)之后,我更加了。
遵循与示例中类似的逻辑我正在执行EventSource.Write并且它不会抛出错误,但是无处可见书面消息。
用于Window IoT的Windows Powershell也不支持Get-EventLog命令。
Windows IoT开发相对较新,因此互联网上没有太多信息。 目前最好的来源是Ms Iot Samples,但尽管样本量很大,但似乎没有任何事件记录。
- 阅读并理解EventSource用户指南
- 在项目中添加一个派生自EventSource的类,并按照链接指南中的描述实现您的方法。 此处提供了一个示例实现。
- 构建项目,找到项目输出(yourProject.winmd)
- 从这里获取EventRegister.exe实用程序
- 运行
EventRegister.exe -UsersGuide
。 阅读并理解用法。 - 运行
eventRegister.exe -DumpRegDlls yourProject.winmd
。 这将生成yourProject.MyEwtProvider.etwManifest.dll
和yourProject.MyEwtProvider.etwManifest.man
文件。 - 在Windows IoT设备上创建一个新文件夹,例如
C:\Events
或使用现有文件夹。 - 在编辑器中打开
yourProject.MyEwtProvider.etwManifest.man
并编辑resourceFileName
和messageFileName
路径,以便父文件夹为C:\Events
- 将
yourProject.MyEwtProvider.etwManifest.dll
和yourProject.MyEwtProvider.etwManifest.man
复制到Windows IoT到C:\Events
文件夹。 注意:最简单的方法是在Windows资源管理器中以\\yourdevice\c$
打开Windows共享 - 使用Powershell连接到Windows IoT。 运行
cd C:\Events
- 运行
wevtutil.exe im .\yourProject.MyEwtProvider.etwManifest.man
。 这不应该产生任何警告或错误。 有关wevtutil.exe
语法的详细信息,请参阅此页面 。
现在,如果你导航到你的ETW WebUI页面,你的问题“MyEwtProvider”将出现在下拉列表中。 您可以通过调用UwpEventSource.Log.Info/Warn/Debug/Critical/Error("Hello from my porgram");
一个来记录程序中的事件UwpEventSource.Log.Info/Warn/Debug/Critical/Error("Hello from my porgram");
如果您不想在不使用WebUI时收集事件,则表示您已完成。 如果您希望能够保留这些并在以后分析它们,请在您的PowerShell会话中运行以下命令:
echo y | wevtutil.exe sl MyEwtProvider/Debug /e:true
看看它在这里做了什么。 现在,您可以通过运行以下命令检索历史数据(一旦累积了它们):
wevtutil.exe qe MyEwtProvider/Debug