3

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,但尽管有大量的样本,但它们似乎都没有进行任何事件记录。

4

1 回答 1

5
  1. 阅读并理解EventSource 用户指南
  2. 将一个派生自EventSource的类添加到您的项目中,并按照链接指南中的说明实现您的方法。此处提供了示例实现。
  3. 构建您的项目,找到项目输出 (yourProject.winmd)
  4. 从这里获取 EventRegister.exe 实用程序
  5. 运行EventRegister.exe -UsersGuide。阅读并理解用法。
  6. 运行eventRegister.exe -DumpRegDlls yourProject.winmd。这将生成yourProject.MyEwtProvider.etwManifest.dllyourProject.MyEwtProvider.etwManifest.man文件。
  7. 例如,在您的 Windows IoT 设备上创建一个新文件夹,C:\Events或使用现有文件夹。
  8. 在编辑器中打开yourProject.MyEwtProvider.etwManifest.man并编辑resourceFileNamemessageFileName路径,以便父文件夹是C:\Events
  9. 复制yourProject.MyEwtProvider.etwManifest.dll并复制yourProject.MyEwtProvider.etwManifest.man到您的 Windows IoT 到该C:\Events文件夹​​。注意:最简单的方法是\\yourdevice\c$在 Windows 资源管理器中打开 Windows 共享
  10. 使用 Powershell 连接到您的 Windows IoT。跑cd C:\Events
  11. 运行wevtutil.exe im .\yourProject.MyEwtProvider.etwManifest.man。这不应产生任何警告或错误。有关语法的详细信息,请参阅此页面。wevtutil.exe

现在,如果您导航到您的 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

看看它在这里做什么。现在,您将能够通过运行来检索历史数据(一旦您积累了它们):

wevtutil.exe qe MyEwtProvider/Debug
于 2016-04-17T08:43:50.007 回答