用托管C++監視Windows事件日志[2]
3、把事件處理程序連接到"新事件日志項"事件 首先,實例化定義了事件處理程序的對象(在此例中為NewLogEntryEventHandler),接著,把事件方法(OnNewLogEntry)添加到EventLog::EntryWritten的事件處理程序列表中: NewLogEntryEventHandler* handler = new
3、把事件處理程序連接到"新事件日志項"事件 首先,實例化定義了事件處理程序的對象(在此例中為NewLogEntryEventHandler),接著,把事件方法(OnNewLogEntry)添加到EventLog::EntryWritten的事件處理程序列表中:
clearcase/" target="_blank" >cccccc width="90%" align=center bgColor=#e7e9e9 border=1>
NewLogEntryEventHandler* handler = new NewLogEntryEventHandler(); log->EntryWritten += new EntryWrittenEventHandler( handler,&NewLogEntryEventHandler::OnNewLogEntry); |
4、為特定事件的處理編寫代碼 回過頭來看一個OnNewLogEntry方法,可以看到傳遞給事件處理程序的EntryWrittenEventArgs對象有一個名為EventLogEntry的成員,其包含了有關記錄項目的詳細情況,具體為以下屬性:
·MachineName--創建事件日志的電腦系統名。
·Source--創建此事件的事件源或程序源。
·Message--用戶可在事件查看器中讀取這條文本值,其描述了記錄的事件。
·Event Type--此值(代表了EventLogEntryType)為一個枚舉值,其代表記錄的事件類型:信息(默認)、警告、錯誤、審核成功、審核失敗。
·Event ID--為有關事件程序特定的號碼。
·Data--此值通常用于存儲二進制信息--如內存轉儲--也是與事件有關的。
不足之處 從以上可以看出,
.NET使得訪問事件日志非常簡單,然而,以下也有一些有關處理事件日志時的限制條件:
·只能在本地系統上監視事件。
·.NET文檔未說明,如果在短時間內記錄了大量的事件,是否可保證每個事件都可被引發。
·如果監視了更新特別頻繁的事件日志,事件有可能不會立即引發,在事件項之間很可能會有一個滯后,接著突然會有大量的事件通知進入消息隊列。
原文轉自:http://www.anti-gravitydesign.com
- 評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
-