【发布时间】:2018-06-20 11:47:55
【问题描述】:
我开发了一个MFC 应用程序,它从event log file (EVTX) 文件中读取windows event logs 并解析它以在应用程序中呈现
为了读取日志文件,我使用 XPATH 查询从包含 40000 条记录的 event log file 文件中检索特定事件日志
示例日志记录如下代码所示
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Error_Log"/>
<EventID Qualifiers="20225">6002</EventID>
<Level>4</Level>
<Task>0</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2018-05-31T10:37:16.000000000Z"/>
<EventRecordID>11679958</EventRecordID>
<Channel>Application</Channel>
<Security/>
</System>
<EventData>
<Data>16:07:16.339:(A)[app.exe] [scan] m_id = [1254]</Data>
<Binary>31363A30373A31362E3333393A2841295B7275706170702E6578655D205B5363616E5D206D5F6964203D205B313235345D</Binary>
</EventData>
</Event>
这里我只想检索那些<DATA> 标记包含子字符串值m_id 的日志记录。为了实现这一点,我尝试了以下query
LPWSTR Query = _T("Event/EventData[Data(Data='m_id')]");
EVT_HANDLE Results = EvtQuery(NULL, Path, Query, EvtQueryFilePath | EvtQueryForwardDirection);
但即使字符串m_id 存在于输入日志文件中,我也无法检索任何日志,如上面的代码所示
【问题讨论】:
标签: c++ winapi mfc event-log event-viewer