我有一個應用程序,它有一個循環,是「調度程序」的一部分,它始終運行並且是應用程序的核心。非常像一個遊戲循環,只是我的應用程序是一個WPF應用程序,它不是一個遊戲。自然地,應用程序在許多方面都進行了日誌記錄,但是Scheduler會進行一些敏感的監視,有時從日誌中不可能知道可能發生了什麼錯誤(以及錯誤的我不是指例外)或當前狀態。實時日誌記錄
由於調度程序的內部循環以很短的時間間隔運行,因此無法在其中執行基於I/O的日誌記錄(或使用事件查看器)。首先,您需要實時觀看它,其次,日誌文件的大小會非常快。所以我在想的方式來表達這個數據的實時用戶,有些事情我認爲:在實時
- 顯示的數據在UI
- 使用AllocConsole/WriteConsole顯示在控制檯此信息
- 使用這將顯示此信息不同的控制檯應用程序,調度和使用管道或其他的IPC技術
- 使用Windows的性能監視器並以某種方式與該信息給它
- ETW 控制檯應用程序之間的通信
在UI中顯示會有問題。首先它不會與我爲我的應用程序考慮的用戶界面集成,並且我不想僅爲此將界面複雜化。這種診斷只會發生很少。其次,會有一些不平凡的數據保護,因爲調度程序有它自己的線程。
一個單獨的控制檯窗口可能會工作,但我仍然擔心,如果它沒有太多的門檻。分配我自己的控制檯,因爲這是一個Windows應用程序,可能會比另一個控制檯應用程序更好(3),因爲我不需要擔心IPC通信和非阻塞通信。但是,用戶可以關閉我分配的控制檯,在這種情況下會出現問題。通過一個單獨的流程,您不必擔心。
假設有一個用於性能監視器的API,它將不會與我的應用程序集成得太好,或者對用戶來說顯然不是。使用ETW也不能解決任何問題,只是一個隨機的想法,我仍然需要以某種方式顯示這些信息。
別人怎麼想的,會有其他方法我錯過了嗎?
您希望用戶如何處理顯示的信息?如果您希望收集離線數據以用於以後的分析而對性能影響最小,ETW似乎是一個不錯的選擇。 – jnoss 2010-04-19 00:23:17
它不適用於以後使用,當有些事情不明顯時,電力用戶可以排除故障 – 2010-04-19 01:42:35
-1很難理解你的問題究竟是什麼,或者你實際上在做什麼。 – 2010-04-24 21:42:24