При вставке событий журнала поле TimeCreated недостаточно точное - PullRequest
4 голосов
/ 28 марта 2012

Я пытаюсь сделать регистрацию приложений в журнале событий Windows в C # с .net Framework 4, но когда я вставляю записи журнала, поле TimeCreated (Просмотр событий -> Журналы Windows -> Приложение -> -> Подробности - > Friendly View -> System) получает значение типа

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

Как вы видите, точность не превышает секунды, хотя я могу видеть какое-то другое событие в средстве просмотра, где есть цифры также после "." с указанием более точной метки времени.

Это какое-то ограничение .Net Framework / CLR / C # или я просто что-то не так делаю?

Спасибо.

VS2010SP1, среда Win7 / Server 2008 R2.

UPDATE:

Могу упомянуть, что пробовал с

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

и EventLogAppender log4net до сих пор.

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

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

Ответы [ 2 ]

2 голосов
/ 11 августа 2013

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

1 голос
/ 12 июля 2012

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

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

...