2016-09-19 1 views
0

Ich verwende C# -Code, um die Fehlermeldung eines bestimmten Fehlers aus der Eventviewer-Protokolldatei abzurufen.Wie erhalten Sie die neuesten Fehlerdetails aus dem EventViewer-Protokoll mit C#?

static void Main(string[] args) 
    { 
     EventLog myLog = new EventLog(); 
     myLog.Log = "Application"; 
     myLog.Source = "Application Error"; 
     foreach (System.Diagnostics.EventLogEntry entry in myLog.Entries) 
     { 
     if (entry.TimeGenerated == DateTime.Parse("9/19/2016 11:48:58 AM")) 
      { 
       using (StreamWriter writer = File.AppendText("Example.txt")) 
      { 
       writer.WriteLine(error_Message); 
      } 
     } 
    } 

Das ist meine Hauptfunktion, wo ich die Fehlermeldung eines bestimmten Fehlers in meinem Anwendungsprotokoll bin immer und ich bin das Drucken der Fehlermeldung in einer Textdatei. Anstatt auf den Fehler mit der Datetime zuzugreifen, möchte ich auf den letzten Fehler in der Logdatei zugreifen.Wie kann ich den letzten Fehler in der Logdatei bekommen? Vielen Dank im Voraus.

+0

Haben Sie nicht bekommen, warum Sie den Zeitstempel kompilieren, wenn Sie die letzte Fehlermeldung möchten. –

Antwort

1
EventLog myLog = new EventLog(); 
myLog.Log = "Application"; 
myLog.Source = "Application Error"; 

var lastEntry = myLog.Entries[myLog.Entries.Count-1]; 
var last_error_Message = lastEntry.Message; 

for(int index=myLog.Entries.Count-1; index>0;index--) 
{ 
    var errLastEntry = myLog.Entries[index]; 
    if (errLastEntry.EntryType == EventLogEntryType.Error) 
    { 
     //this is the last entry with Error 
     var appName = errLastEntry.Source; 
     break; 
    } 
} 
+0

Danke.Die Antwort funktioniert gut. Aber in der Logdatei gibt es Informationen, Warnungen und Fehler. Dieser Code kann die Nachricht für den letzten Eintrag unabhängig vom Typ erfassen, dh Warnung, Information oder Fehler. Wie kann ich den Code ändern, um die letzte FEHLER-Nachricht allein zu erfassen, selbst wenn der letzte Eintrag eine Warnung oder Information war.'var lastEntry = myLog.Quelle [myLog.Quelle.Zahl - 1]; 'wird das funktionieren? Aber es zeigt mir Fehler – Vishwaroopa

+0

Die for-Schleife hinzugefügt, um den letzten Fehler zu erhalten. –

+0

Funktionierte es für Sie? –

Verwandte Themen