我已经开始使用Microsoft推荐的ETW日志记录,因为它具有高性能并且可以防止重新发明轮子等。
但是,我发现如果有人删除了日志文件,那么日志记录将停止工作,直到跟踪会话停止并重新启动。如果API实际上返回了一个错误,我可以忍受这个,所以我可以自己重启,但没有任何返回任何错误代码。
我的问题是 - 我该如何应对这种情况?有没有办法告诉ETW锁定文件以防止删除?某些东西应该返回错误吗?
请注意,我使用的是NT5 API级别,但在NT6 +上可以看到此问题。
相关API':
RegisterTraceGuids
StartTrace
EnableTrace
TraceEvent
我希望在删除文件时可以调用控件回调,但没有任何反应。
答案 0 :(得分:0)
如果您正在使用EventSource库,请查看Vance Morrison的博客文章Why doesn't my EventSource produce any events?简短回答:通常会吞下异常,因为日志记录系统不应该使您的应用程序崩溃。在博客条目中,他解释了如何通过建立外部跟踪会话来查看引发的异常。您可能希望定期轮询文件是否存在,并以某种方式发出错误报告。