2015-01-13 136 views
1

我已經開始使用ETW日誌作爲其高性能建議由微軟和防止重複發明輪子等ETW - 刪除日誌文件導致日誌記錄中斷?

但是我發現,如果有人刪除日誌文件,然後簡單地記錄停止工作,直到跟蹤會話停止並重新啓動。如果API實際返回錯誤,我可以忍受這一點,所以我可以自己重新啓動它,但沒有任何返回任何錯誤代碼。

我的問題是 - 我該如何處理這種情況?有沒有辦法告訴ETW鎖定文件以防止刪除?應該返回一個錯誤?

請注意,我使用的是NT5 API級別,但在NT6 +上可以看到此問題。

相關的API:

RegisterTraceGuids 
StartTrace 
EnableTrace 
TraceEvent 

我希望,當文件被刪除的控制回調可能被調用,但沒有任何反應。

回答

0

如果您使用的是EventSource庫,請查看Vance Morrison的博客條目,Why doesn't my EventSource produce any events?簡短回答:異常通常會被吞噬,因爲日誌記錄系統不應該使應用程序崩潰。在博客條目中,他解釋瞭如何通過建立外部跟蹤會話來查看拋出的異常。您可能希望定期輪詢文件的存在,並以某種可檢測的方式輸出錯誤報告。

+0

我使用原始的win32 API,所以不能有任何異常(除了訪問衝突,這將意味着操作系統中的錯誤) – paulm

+0

我一直使用它從.net包裝,我沒有看到關於那裏失敗的很多信息。 ETW的設計主要是爲了使日誌文件創建與事件跟蹤生成分離開來。 –

+0

所以你認爲在運行時刪除日誌文件意味着它應該靜靜地失敗,直到下一次重新啓動?即使ETW會話在下一次重新啓動時也沒有了?看起來像一個巨大的缺陷給我 – paulm

相關問題