我一直在尝试找到从远程服务器检索事件的不同方法。目前我们正在使用Wevtutil.exe,但服务器之间的延迟使得该工具非常慢(约90个事件/秒)。
C#的EventLogQuery / EventLogReader / EventLogRecord更快地提取事件(~5800个事件/秒),但输出缺少事件的RenderingInfo。 EventLogRecord的ToXml()方法表示输出将符合事件模式which has RenderingInfo,但输出.xml没有。
没有RenderingInfo:
<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'>
<System>
<Provider Name='TestSource'/>
<EventID Qualifiers='0'>555</EventID>
<Level>4</Level>
<Task>1</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime='2016-04-25T19:17:15.260504300Z'/>
<EventRecordID>211346</EventRecordID>
<Channel>TestLog</Channel>
<Computer>MyComputer</Computer>
<Security/>
</System>
<EventData>
<Data>1</Data>
</EventData>
</Event>
使用:
<Event xmlns='http://schemas.microsoft.com/win/2004/08/events/event'>
<System>
<Provider Name='TestSource'/>
<EventID Qualifiers='0'>555</EventID>
<Level>4</Level>
<Task>1</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime='2016-04-25T19:17:15.260504300Z'/>
<EventRecordID>211346</EventRecordID>
<Channel>TestLog</Channel>
<Computer>MyComputer</Computer>
<Security/>
</System>
<EventData>
<Data>1</Data>
</EventData>
<RenderingInfo Culture='en-US'>
<Message>1</Message>
<Level>Information</Level>
<Task></Task>
<Opcode>Info</Opcode>
<Channel></Channel>
<Provider></Provider>
<Keywords>
<Keyword>Classic</Keyword>
</Keywords>
</RenderingInfo>
</Event>
我似乎无法找到有关RenderingInfo或如何获取它的更多信息。
如何使用EventLogReader获取RenderingInfo?
什么是RenderingInfo以及我可以通过其他方式获得它?
我一直在寻找其他方法来检索事件(WMI,WinAPI,EventLog,LogParser.exe),但我不确定哪种解决方案会让我最快的RendingInfo。