2012-03-28 8 views
4

Ich versuche, Anwendungsprotokollierung in das Windows-Ereignisprotokoll in C# mit .net Framework 4, aber wenn ich die Protokolleinträge das TimeCreated Feld (Event Viewer -> Windows-Protokolle -> Anwendung -> -> Details -> Friendly View -> System) erhält einen Wert wieBeim Einfügen von Protokollereignissen ist das TimeCreated-Feld nicht genau genug

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

wie Sie die Unter zweiter Genauigkeit sehen fehlen, obwohl ich ein anderes Ereignis im Betrachter sehen wo gibt es auch Zahlen nach dem "." Anzeige eines präziseren Zeitstempels.

Ist dies eine Art von Einschränkung des .Net Framework/CLR/C# oder mache ich nur Dinge falsch?

Danke.

VS2010SP1, Win7/Server 2008 R2-Umgebung.

UPDATE:

konnte ich erwähnt, dass ich versucht habe, mit

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

und EventLogAppender der log4net so weit.

UPDATE 2:

So, ETW mit für Ereignisse in das Ereignisprotokoll tatsächlich produziert Veranstaltungen, bei denen die Systemtime hat eine Unter zweiten Auflösung einsetzen. Könnte es sein, dass dies tatsächlich notwendig ist, fühlt sich für meinen Fall übertrieben an.

Antwort

1

Ich kann nichts autoritatives finden (leider), aber es scheint, dass die ReportEvent-Funktion von advapi32.dll nur auf die Sekunde folgt. In den Beispielen, die ich gesehen habe, um diese Funktion zu verwenden, ist der Zeitstempel so, wie Sie es gezeigt haben, nur für den zweiten.

Die WriteEntry-Methode verwendet die ReportEvent-Funktion ADVAPI32.dll, um in das Ereignisprotokoll zu schreiben. In diese Funktion werden keine Datums-/Uhrzeitwerte übergeben. Daher müssen wir davon ausgehen, dass es sich um eine interne Funktion handelt, die die Genauigkeit nicht überwacht.