Kann man Windows EventLog millisekundengenau sortieren?

570
TonyG

Wenn mehr als ein Windows-Ereignisprotokoll in derselben Sekunde erstellt wird, kann die Sortier- / Anzeigereihenfolge von der Reihenfolge abweichen, in der sie geschrieben wurden. Der Index scheint die umgekehrte Reihenfolge zu sein, in der sie geschrieben wurden: LIFO, nicht FIFO.

Ich habe Code geschrieben, um Ereignisprotokolleinträge zu lesen, und sowohl TimeGenerated als auch TimeWritten werden auf die nächste Sekunde gerundet. Sie haben keine Millisekundenauflösung.

Gibt es eine Möglichkeit, eine bessere Auflösung für Windows-Ereignisprotokollobjekte zum Schreiben oder Lesen zu erhalten? Vielleicht mit einem Registrierungswechsel oder Code?

Eine Lösung hierfür wäre, das Windows-Ereignisprotokoll nicht für solche Daten zu verwenden, und Ereignisse höherer Ebene verweisen auf Dateiprotokolle mit mehr Details. Eine andere Codelösung wäre die Verwendung des binären Datenfelds zum Speichern eines Zeitstempels in Ticks. Dann kann ich ein benutzerdefiniertes Programm verwenden, um das Protokoll zu lesen / sortieren und diese Daten für eine feinere Auflösung zu verwenden, wenn es verfügbar ist. Aber ich würde es vorziehen, diesen Hack zu vermeiden, der sowieso nur für benutzerdefinierte Einträge gilt.

Ich denke, es wird eine Frage kommen, "warum interessiert es dich" oder "so sollte das Protokoll nicht verwendet werden". Lassen Sie uns davon zu spezifischen technischen Antworten springen. Vielen Dank.

0

2 Antworten auf die Frage

1
TonyG

Nach Recherchen und wie in meiner Frage angegeben, gibt es eine Möglichkeit, dies mithilfe des Streams rawData byte [] zu tun: Konvertieren Sie einfach einen Zeitstempel (long oder DateTime) in ein Byte-Array und speichern Sie ihn.

Nein, wir können den standardmäßigen Ereignisprotokoll-Viewer nicht verwenden, um dies zu filtern, zu sortieren oder anzuzeigen. Und nein, wir können nicht nach Protokolleneinträgen sortieren, die wir nicht erstellt haben, was im ersten Teil meiner Frage impliziert wurde. Daher erteile ich @spacenonymous die richtige Antwort.

Aber die Frage ist, ob wir das Protokoll wie in den Daten sortieren können, nicht ob wir den Standard-Viewer verwenden können - wie ich im OP gesagt habe:

Eine andere Codelösung wäre die Verwendung des binären Datenfelds zum Speichern eines Zeitstempels in Ticks. Dann kann ich ein benutzerdefiniertes Programm verwenden, um das Protokoll zu lesen / sortieren und diese Daten für eine feinere Auflösung zu verwenden, wenn es verfügbar ist.

Eine richtigere / raffiniertere Antwort lautet: "Ja, für Einträge, die wir erstellen, ist das die Art und Weise, eine Sortierung / Filterung durchzuführen, aber ansonsten Nein".

0
spacenomyous

Negativ: Der EVENT LOG RECORD zeichnet nur eine Sekunde auf

In einem 32-Bit-Zeitstempel ist für eine höhere Auflösung kein Platz. Wenn Sie dies ändern, wird die Kompatibilität mit Anwendungen, die auf das Ereignisprotokoll zugreifen, beeinträchtigt. LMiller7 vor 7 Jahren 0
Wenn es nicht um die Zeitstempelgröße geht, gibt die readeventlog-Funktion ein eventlogrecord-Objekt zurück, das in Sekunden gemessen wird. Sie benötigen eine andere Lesefunktion, um zusätzliche Informationen zu erhalten, falls verfügbar spacenomyous vor 7 Jahren 0