插入日志事件时,TimeCreated字段不够准确

本文关键字:字段 不够 TimeCreated 日志 事件 插入 | 更新日期: 2023-09-27 18:29:27

我正试图用.net framework 4将应用程序日志记录到c#中的windows事件日志中,但当我插入日志条目时,TimeCreated字段(事件查看器->windows日志->应用程序->详细信息->友好视图->系统)会得到一个类似的值

[SystemTime] 2012-03-28T11:07:12.000000000Z 

正如你所看到的,亚秒的准确性是缺失的,尽管我可以在查看器中看到一些其他事件,其中"."后面也有数字,表示更精确的时间戳。

这是.Net Framework/CLR/C#的某种限制吗?还是我只是做错了什么?

谢谢。

VS2010SP1,Win7/Server 2008 R2环境。

更新:

我可以说我试过

EventLog.WriteEntry("applicationName", "message", logEntryType, (int)eventId, (short)taskCategory);

以及log4net的EventLogAppender。

更新2:

因此,使用ETW将事件插入事件日志实际上会产生SystemTime分辨率低于秒的事件。这可能真的是必要的吗?对我的案子来说,这感觉有些过头了。

插入日志事件时,TimeCreated字段不够准确

Microsoft终于为这个问题提供了解决方案。查看这篇博客文章:宣布EventSource NuGet包-写入Windows事件日志。

我找不到任何权威(不幸的是),但advapi32.dll的ReportEvent函数似乎只跟踪到第二个。在我看到的使用此函数的示例中,时间戳如您所示,仅为秒。

WriteEntry方法使用ADVAPI32.dll ReportEvent函数写入事件日志,没有日期/时间值传递到该函数中,因此我们必须假设这是一个不跟踪精度的内部事件。