使用WQL可靠地获得最新事件日志记录
我编写了一个应用程序,通过Zenoss wmi-client软件包从linux收集windows日志。
它使用WQL查询事件日志并解析返回。我的问题是试图找到日志中的最新条目。
我偶然发现了这个,它告诉我在这样的查询中使用NumberOfRecords列
Select NumberOfRecords from Win32_NTEventLogFile Where LogFileName = 'Application'
并使用其中的返回值作为最高日志。
我的问题是,我听说Windows事件日志是一个循环缓冲区,它会在日志变满时用新的日志覆盖它最旧的日志。这会对NumberOfRecords产生影响,就好像发生这种情况一样,事件的“RecordNumber”属性将继续增加,但事件日志中的实际记录数不会改变(对于每个写入的条目,一个被删除) )。
任何人都可以了解这实际上是如何工作的(无论NumberOfRecords是最高的RecordNumber,还是日志中的实际事件数),或许可以提出一个解决方案?
更新
所以我们现在知道NumberOfRecords不能自行运行,因为事件日志是一个环形缓冲区。 MS解决方案是获取最早的记录并将其添加到NumberOfRecords以获取实际的最新记录。
这可以通过WinAPI实现,但我是从Linux远程调用的。有谁知道我在我的场景中如何实现这一目标?
谢谢
没有找到相关结果
已邀请:
2 个回复
夏瓤跋棘
诉嘎归亮
并通过结果找到最大RecordNumber。但是如果日志文件的大小很大,这可能需要几十秒或几分钟...它非常慢。 但! 您可以获得多少记录:
这非常快。然后减少选择以加速搜索最新记录:
这个< =的执行时间比一般情况要好。