Xampp Logfiles Auswerten
-
Hallo!
Ich würde gerne die Logfiles (access.log) von XAMPP auswerten.
Die Datei einzulesen, wäre ja theoretisch mit der StreamReader Klasse kein Problem. Jetzt steh ich aber vor folgenden Problemen:Der Xampp Server schreibt die Datei => Mit StreamReader werd ich nicht drauf zugreifen können.
"The process cannot access the file 'C:\xampp\apache\logs\access.log' because it is being used by another process."
Ich würde gerne jede Zeile der Logdatei auslesen und sobald eine weitere Zeile in die Logdatei geschrieben wird, sollte es mein Programm merken, und diese ebenfalls auslesen.
Natürlich könnte ich einfach mit ReadToEnd() im Sekunden Takt die ganze Datei auslesen, aber diese Methode wäre mir etwas zu "hässlich". Außerdem müsste man immer die komplette Datei (welche ja auch mehrere MB groß sein kann) auslesen, was Performance kosten würde. Also wäre so etwas wie der tail -f Befehl unter Linux erstrebenswert.
Zeilenweise auslesen.
Eine neue Zeile wird von Xampp in die access.log geschrieben
Programm merkt das und liest die neue Zeile aus.Hoffe dass mir wer helfen kann...
Freundliche Grüße
Loacker
-
Programm merkt das und liest die neue Zeile aus.
http://msdn.microsoft.com/de-de/library/system.io.filesystemwatcher(VS.80).aspx
ist das Log wirklich exklusiv geöffnet?
-
Was mir gerade aufgefallen ist:
Wenn ich folgendes mache:
File.Copy("logfile", "new destination");
funktioniert das ohne probleme und ich kann auch "new destination" bearbeiten und öffnen.ich denke es liegt an der streamreader klasse selber, weil ansonsten dürfte ein file.copy ja auch nicht funktionieren.
-
xampplogfile schrieb:
ich denke es liegt an der streamreader klasse selber,
per Default öffnet StreamReader (bzw. die Basis-Klasse) die Datei mit allem was geht
gcnew StreamReader(gcnew FileStream(file, FileMode::Open, FileAccess::Read, FileShare::ReadWrite));