我们可以按毫秒的精度对 Windows EventLog 进行排序吗?

我们可以按毫秒的精度对 Windows EventLog 进行排序吗?

当在同一秒内创建多个 Windows 事件日志时,排序/显示顺序可能与写入顺序不同。索引似乎是写入顺序的逆序:后进先出,而不是先进先出。

我编写了代码来读取事件日志条目,TimeGenerated 和 TimeWritten 都四舍五入到最接近的秒。它们没有毫秒级的分辨率。

那么,有没有办法更好地解析 Windows 事件日志对象,无论是写入还是读取?也许使用注册表开关或代码?

解决此问题的一个方法是不使用 Windows 事件日志来存储此类数据,并让更高级别的事件指向具有更多详细信息的文件日志。另一个代码解决方案是使用二进制数据字段以刻度存储时间戳。然后我可以使用自定义程序读取/排序日志,并在可用时使用该数据获得更精细的分辨率。但我还是希望避免这种仅适用于自定义条目的黑客行为。

我猜你会问“你为什么关心”或“日志不应该这样使用”。让我们跳过这些,直接进入具体的技术答案。谢谢。

答案1

否定事件日志记录仅记录到一秒的精度

答案2

经过研究,正如我的问题所示,是的,使用 rawData byte[] 流执行此操作的方法是:只需将时间戳(长整型或日期时间)转换为字节数组并保存即可。

不,我们不能使用默认事件日志查看器来过滤、排序或查看此内容。并且,我们无法按毫秒对我们未创建的日志条目进行排序,这在我的问题的第一部分中已经暗示,因此我将正确答案授予@spacenonymous。

但问题是我们是否可以对日志进行排序,就像数据一样,而不是我们是否可以使用默认查看器 - 正如我在 OP 中所说的那样:

另一个代码解决方案是使用二进制数据字段以刻度存储时间戳。然后我可以使用自定义程序读取/排序日志,并在可用时使用该数据获得更精细的分辨率。

因此,更正确/更精确的答案是“是的,对于我们创建的条目,这是进行排序/过滤的方式,但除此之外不行”。

相关内容