如何在 Windows IoT 中记录事件?

How do I log events in Windows IoT?

用于 Windows IoT 的 WebUI(如 Raspberry PI 中所见)具有以下事件跟踪屏幕:

如何从 uwp 程序写入事件日志,然后检查其中写入的内容?

This answer(与 Windows 物联网无关)建议您需要使用标准 System.Diagnostics.Tracing 类。该答案所指的示例是演示记录到 文件 。在登录到内置工具(例如 ETW)后,我更多了。

遵循与我正在执行的示例中类似的逻辑EventSource.Write,它没有抛出错误,但是写入的消息无处可见。

Windows Window IoT 的 Powershell 也不支持 Get-EventLog 命令。

Windows物联网发展比较新,网上资料不多。目前最好的来源是 Ms Iot Samples,但尽管有大量样本 none,但它们似乎正在记录任何事件。

  1. 阅读并理解EventSource User’s Guide
  2. 向派生自 EventSource and implement your methods as described in the linked guide. A sample implementation is available here 的项目添加 class。
  3. 构建您的项目,找到项目输出 (yourProject.winmd)
  4. here
  5. 获取EventRegister.exe实用程序
  6. 运行EventRegister.exe -UsersGuide。阅读并理解用法。
  7. 运行eventRegister.exe -DumpRegDlls yourProject.winmd。这将生成 yourProject.MyEwtProvider.etwManifest.dllyourProject.MyEwtProvider.etwManifest.man 文件。
  8. 在您的 Windows IoT 设备上创建一个新文件夹,例如 C:\Events 或使用现有文件夹。
  9. 在编辑器中打开 yourProject.MyEwtProvider.etwManifest.man 并编辑 resourceFileNamemessageFileName 路径,使父文件夹为 C:\Events
  10. yourProject.MyEwtProvider.etwManifest.dllyourProject.MyEwtProvider.etwManifest.man 复制到 Windows IoT 的 C:\Events 文件夹中。 注意:最简单的方法是在 Windows Explorer
  11. 中打开 windows 共享为 \yourdevice\c$
  12. 使用 Powershell 连接到您的 Windows 物联网。 运行cd C:\Events
  13. 运行wevtutil.exe im .\yourProject.MyEwtProvider.etwManifest.man。这不应产生任何警告或错误。 wevtutil.exe语法的详细内容请参考this page

现在,如果您导航到问题中的 ETW WebUI 页面,"MyEwtProvider" 将出现在下拉列表中。您通过调用 UwpEventSource.Log.Info/Warn/Debug/Critical/Error("Hello from my porgram");

之一在您的程序中记录事件

如果您不想在不使用 WebUI 时收集事件,那么您就完了。如果您希望能够保留这些并在以后分析它们,运行 在您的 powershell 会话中执行以下命令:

echo y | wevtutil.exe sl MyEwtProvider/Debug /e:true

看看它的作用 here。现在您将能够通过 运行ning 检索历史数据(一旦您积累了它们):

wevtutil.exe qe MyEwtProvider/Debug