Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Lesen aus Logfile, Programmabsturz (https://www.delphipraxis.net/142888-lesen-aus-logfile-programmabsturz.html)

peter001 5. Nov 2009 13:52


Lesen aus Logfile, Programmabsturz
 
Hallo!

Threadtitel ist nicht ganz passend, deshalb mein Problem nochmal ausführilcher:

Gesetzer Fall; eine Anwendung x schreibt einen logfile mit hoher Frequenz. (u.U. mehr als 10 Einträge die Sekunde)
Ich möchte mit einem Delphiprogramm nun praktisch den Logfile extern in nahezu Echtzeit mitverfolgen, um ihn parallel auszuwerten.
Dazu setze ich einen Timer an, der jede Sekunde den logfile einliest (memo1.loadfromfile...), verarbeitet und dann den weiteren Verlauf fortsetzt.

Erreicht der log eine bestimmte Größe (z.B. Zeilenanzahl über 1000), soll der Logfile vom Tool gelöscht/geleert werden, damit die Anwendung x beim nächsten Bedarf mit einem neuen Logfile beginnt.

Problem in der Praxis: Es kommt nach mehreren Minuten regelmäßig zum Absturz der Anwendung x, da scheinbar der Logfile zu diesem Zeitpunkt in Benutzung (des Tools) ist und ein Schreiben nicht möglich ist.

Ich suche also eine Möglichkeit, in regelmäßigen Intervallen schnell an die Inhalte des Logfiles zu kommen, ohne ihn von der Bearbeitung der Anwendung x auszuschließen, bzw. eine Möglichkeit, den Logfile in Echtzeit mitzulesen.

Wie kann ich das am günstigsten angehen?

himitsu 5. Nov 2009 14:08

Re: Lesen aus Logfile, Programmabsturz
 
Kannst du am Programm etwas ändern?

Wie öffnet das Programm die Datei? (welche Sharing-Rechte läßt es zu)

peter001 5. Nov 2009 15:29

Re: Lesen aus Logfile, Programmabsturz
 
Hi

Da liegt das Problem. Auf Anwendung x habe ich weder zugriff noch weiß ich wie es sich die DateiHandels erstellt. Ob während dem Schreibzugriff die Datei gesperrt wird, etc. Ich kann also nur ausprobieren und auf Vermutung probieren.

Ich habe jetzt durch die Suche diverse Ansätze gefunden, aber bisher war noch nichts wirklich erfolgreich.
Ein Stream scheint da am erfolgversprechendsten zu sein, allerdings habe ich nicht genau verstanden, wie genau ich da mit einem Stream drauf zugrifen kann, wenn ich fest davon ausgehe, dass der Logfile durch Anwendung x gesperrt/gelockt ist.

Um das nochmal zu betonen: Mein Delphi Tool soll nur lesen, die Funktion ein zu großes log zu löschen damit es von der Anwendung automatisch neu angelegt wird ist optional, wenn das aber zu risikant ist, lasse ich das lieber raus.

himitsu 5. Nov 2009 16:19

Re: Lesen aus Logfile, Programmabsturz
 
Tja, wenn du hättest was am Programm ändern können, dann hättest du nicht erst naträglich auf die Daten zugreifen müssen.

Und wenn das programm so oft auf diese Datei zugreift und es auch noch so "scheiße" reagiert, wenn auf die Datei nicht zugreifbar ist, dann darf man halt nicht so oft drauf zugreifen und das Abstürzen so regelrecht provozieren.

Was du machen könntest die schreiboperationen hooken und dann die Daten direkt odrt abfangen/auslesen



Ansonsten würde ich erstmal versuchen diese Datei nur mit leserechten zu öffnen, offen lassen und dann schauen wie das Programm reagiert.

Wenn du glück hast, dann läßt das Programm beim Zugriff dieses zu und verreckt nicht.

taveuni 5. Nov 2009 16:33

Re: Lesen aus Logfile, Programmabsturz
 
Oder nimm ein fertiges Tool.
Z.B. http://www.hootech.com/WinTail/
Sehr gut kostet 49$.
Oder irgendein Freeware Tail.
http://lmgtfy.com/?q=tail+windows


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz