如何在 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,但它们似乎正在记录任何事件。
- 阅读并理解EventSource User’s Guide
- 向派生自 EventSource and implement your methods as described in the linked guide. A sample implementation is available here 的项目添加 class。
- 构建您的项目,找到项目输出 (yourProject.winmd)
- 从here
获取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 Explorer 中打开 windows 共享为 \yourdevice\c$
- 使用 Powershell 连接到您的 Windows 物联网。 运行
cd C:\Events
- 运行
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
用于 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,但它们似乎正在记录任何事件。
- 阅读并理解EventSource User’s Guide
- 向派生自 EventSource and implement your methods as described in the linked guide. A sample implementation is available here 的项目添加 class。
- 构建您的项目,找到项目输出 (yourProject.winmd)
- 从here 获取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 Explorer 中打开 windows 共享为 - 使用 Powershell 连接到您的 Windows 物联网。 运行
cd C:\Events
- 运行
wevtutil.exe im .\yourProject.MyEwtProvider.etwManifest.man
。这不应产生任何警告或错误。wevtutil.exe
语法的详细内容请参考this page。
\yourdevice\c$
现在,如果您导航到问题中的 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