我编写了一个应用程序,它通过 Zenoss wmi-client 包从 linux 收集 Windows 日志。
它使用 WQL 查询事件日志并解析返回。我的问题是试图在日志中找到最新的条目。
我偶然发现了这个,它告诉我在这样的查询中使用 NumberOfRecords 列
Select NumberOfRecords from Win32_NTEventLogFile Where LogFileName = 'Application'
并将其返回值用作最高日志。
我的问题是,我听说 Windows 事件日志是一个循环缓冲区,也就是说,当日志已满时,它会用新日志覆盖它最旧的日志。这会对 NumberOfRecords 有影响吗,好像发生这种情况一样,事件的“RecordNumber”属性将继续增加,但是事件日志中的实际记录数不会改变(对于每个写入的条目,都会删除一个)。
任何人都可以了解这实际上是如何工作的(NumberOfRecords 是最高的 RecordNumber,还是日志中的实际事件数),并可能提出解决方案?
更新
所以我们现在知道 NumberOfRecords 不能单独工作,因为 Event Log 是一个环形缓冲区。MS 解决方案是获取最旧的记录并将其添加到 NumberOfRecords 以获取实际的最新记录。
这可以通过 WinAPI 实现,但我是从 Linux 远程调用的。有谁知道我如何在我的场景中实现这一目标?
谢谢