При вставке событий журнала поле TimeCreated недостаточно точное

Я пытаюсь вести журнал приложений в журнале событий Windows в С# с .net framework 4, но когда я вставляю записи журнала в поле 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);

и EventLogAppender от log4net.

ОБНОВЛЕНИЕ 2:

Таким образом, использование ETW для вставки событий в журнал событий фактически создает события, для которых системное время имеет разрешение менее секунды. Может быть, это действительно необходимо, для моего случая это кажется излишним.


person Jonas Granvik    schedule 28.03.2012    source источник


Ответы (2)


Microsoft, наконец, предоставила решение этой проблемы. Ознакомьтесь с этой записью в блоге: Объявление пакета NuGet EventSource — запись в журнал событий Windows.

person Josh Collins    schedule 11.08.2013
comment
Потрясающий! Спасибо за наводку! - person Jonas Granvik; 11.08.2013

Я не могу найти ничего авторитетного (к сожалению), но похоже, что функция ReportEvent advapi32.dll отслеживает только до секунды. В примерах использования этой функции, которые я видел, отметка времени такая же, как вы показали, только с точностью до секунды.

Метод WriteEntry использует функцию ADVAPI32.dll ReportEvent для записи в журнал событий, в эту функцию не передаются значения даты/времени, поэтому мы должны предположить, что это внутренняя вещь, которая не отслеживает точность.

person Peter    schedule 11.07.2012