ETW - 删除日志文件会导致日志记录中断



我已经开始按照Microsoft的建议使用 ETW 日志记录,因为它具有高性能并防止重新发明轮子等。

但是,我发现如果有人删除日志文件,则日志记录只会停止工作,直到跟踪会话停止并重新启动。如果 API 实际上返回了错误,我可以忍受这一点,所以我可以自己重新启动它,但没有返回任何错误代码。

我的问题是 - 我如何处理这种情况?有没有办法告诉 ETW 锁定文件以防止删除?应该有什么东西返回错误吗?

请注意,我使用的是 NT5 API 级别,但在 NT6+ 上可以看到此问题。

相关原料药:

RegisterTraceGuids
StartTrace
EnableTrace
TraceEvent

我希望在删除文件时可以调用控件回调,但没有任何反应。

如果您使用的是 EventSource 库,请查看 Vance Morrison 的博客文章《为什么我的 EventSource 不生成任何事件?简短的回答:异常通常会被吞噬,因为日志记录系统不应该使应用程序崩溃。在博客文章中,他解释了如何通过建立外部跟踪会话来查看引发的异常。您可能希望定期轮询文件是否存在,并以某种可以检测到的方式发布错误报告。

最新更新