4

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

[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 具有亚秒级分辨率的事件。难道这实际上是必要的,对我的情况来说感觉有点过分了。

4

2 回答 2

2

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

于 2013-08-11T03:20:52.370 回答
1

我找不到任何权威(不幸的是),但似乎 advapi32.dll 的 ReportEvent 函数只追踪到第二个。在我看到的使用这个函数的例子中,时间戳就像你展示的那样,只是到第二个。

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

于 2012-07-11T20:44:31.603 回答