2016-04-12 7 views
0

Ich versuche, die erste eventlog Eintrag mit C# EventLogQuery
zu bekommen, aber ich kann nicht die entsprechende Abfrage zu finden scheinen ..Holen erste Fenster eventlog Eintrag mit EventLogQuery

string queryString = "*[System[(EventId= 1)]]"; 
string queryString = "*[System[(InstanceId = 1)]]"; 
string queryString = "*[System[(RecordNumber= 1)]]"; 

EventRecord eventRecord; 
EventLogQuery query = new EventLogQuery(LOG_SYSTEM, PathType.LogName, queryString); 
EventLogReader reader = new EventLogReader(query); 

eventRecord = reader.ReadEvent(); 

return eventRecord; 

alle Ergebnis in null ..

das funktioniert aber recht langsam:

var log = EventLog.GetEventLogs(Environment.MachineName); 
var systemLog = log.Single(l => l.Log == "System"); 
var firstEntry = systemLog.Entries.Cast<EventLogEntry>().OrderBy(l => l.InstanceId).First(); 

So freue ich mich für die cor richtige Abfrage für diesen Fall.

Dies funktioniert einfach und extrem schnelle

Antwort

0

fand ich, dass die Abfrage ... case-sensitive ist!

+0

Dies funktioniert nur, bis das Ereignisprotokoll umgebrochen wird und das mit Ereignis-ID 1 verknüpfte Ereignis automatisch gelöscht wird. Ich versuche eine Lösung zu finden, die nicht auf das EventID-Feld angewiesen ist. Hat jemand Ideen? –

Verwandte Themen