Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi suche suchfunktion für grosse log files (https://www.delphipraxis.net/46660-suche-suchfunktion-fuer-grosse-log-files.html)

michdan 29. Mai 2005 12:27


suche suchfunktion für grosse log files
 
hallo

Ich möchte mir ein tool schreiben das ich zur analyze von log files benutzen kann.

Die log files stammen von verschidene applikationen und sind 10 mb gross, es ist reiner ascii text.
Die einträge sind mit zeitstempel versehen und vom log kann man zum beispiel einen warenfluss verfolgen

Die aufgabe ist:

1) Das log file nach bestimmten einträgen durchsuchen und alle gefundene zeilen in ein anzeige fenster kopieren.
2) Die gefundene einträge muss man nach verschidenen kriterien sortieren können. zumbeispiel das zeitstempel.
3) Mann muss die suchfunktion mehrmals mit verschidene argumenten aufrufen können und das resultat im selben anzeige fenster kopieren.


meine fragen:
1) Hat jemand so etwas schon mal gemacht ?
2) Gibt es irgendwo beispiele, projekte, links zum anshauen ?
3) Wie kann ich am besten, meist effizient, so grosse files durchsuchen ?

gruss
michael

Hansa 29. Mai 2005 12:46

Re: suche suchfunktion für grosse log files
 
Als erstes fiel mir ein Stringgrid ein. Das wäre das flexibelste. Erste Wahl wäre aber wohl eine doppelt verkettete Liste. Beides bedeutet etwas (eventuell überflüssige) Arbeit. Als Kompromiss würde ich mir TStrings oder TStringlist ansehen.

alzaimar 29. Mai 2005 21:07

Re: suche suchfunktion für grosse log files
 
Versuche "Grep". Ist bei GExperts mit dabei, Bekommst du aber auch im Netz. War bei TurboPascal enthalten. Ach, findest Du schon.

Ich sehe meine Logs als entweder ein string (dann mit boyer moore suchen) oder als Stringlist. Dann Schleife und POS.
In jedem Fall solltest Du dir eine RegExpression Maschine besorgen, damit kannst Du sehr effektiv suchen. Ich hatte mir extra ein Tool geschrieben (Quick and Dirty), das mir die relevanten Log-Zeilen ausfiltert. Eigentlich habe ich ständig dran rumgebastelt, weil jedes Mal die Problemstellung anders war. Also wurde flux die Suchroutine angepasst.

Ich würde die Daten einlesen und gleich den Zeitstempel extrahieren. Damit hast Du dein erstes Sortier/Suchkriterium. Dann benutze z.B. einen RegExpression-Parser (NDEA). Die gibt es u.A. bei torry.net Damit solltest Du die meisten Filteroperationen implementieren können. Deine Wünsche nach Sortieren/Auswerten etc. sind ja stark vom Inhalt der Logzeilen abhängig.

michdan 30. Mai 2005 08:58

Re: suche suchfunktion für grosse log files
 
:-D hi alzaimar

Ich kenne auch 'Grep' und es ist auch diese funktionalitet vom diesem program das ich erreichen möchte.

Hast du schon erfahrung gemacht wie es mit grossen log files geht ?
Die logfiles die ich analyzieren möchte sind 10mb gross und sind in meherenden files abgespeichert, würde dass dann immer noch mit stringlist und POS funktionen funktionieren ?

Könntes du eventuel dein tool mal posten/mailen , als anregung.. :-D

gruss
michael

franktron 30. Mai 2005 09:16

Re: suche suchfunktion für grosse log files
 
Also ich hab meine Logfiles immer in ein DB Kopiert und dann mit LIKE gesucht und gefiltert.

alzaimar 30. Mai 2005 09:26

Re: suche suchfunktion für grosse log files
 
Klar in eine DB reinballern und mit LIKE ist natürlich optimal (=Grep für Reiche :-D).
Ich brauchte aber reguläre Ausdrücke, das kann SQL nicht.

10MB Größe geht noch. Am längsten dauert ja sowieso das Einlesen. Du solltest dir überlegen, was Du genau brauchst.
Ich brauchte ein Tool, bei dem ich mit den Logs rumspielen konnte (Gemeinsamkeiten finden, etc.) Also hab ich alles in ein Memo eingelesen und rumgescrollt, gefiltert etc.

Vielleicht brauchst Du ein Kommandozeilentool, das einfach sehr schnell die Logdateien nach bestimmten Kriterien durchsucht.

Mein Tool ist weg :wall:. Aber es war relativ einfach:

1. Eingabe Filename,
2. Eingabe Filterkriterium
3. LOAD-Button. Daten werden gelesen und gefiltert. Anzeige im Memo (oder StringGrid).
4. Goto 2 oder 'reset'-Button: Dann Goto 1
------------
Ach, und dann hatte ich noch ein Histogramm, wo man einfach sehen konnte, wie viele logs zu welcher Uhrzeit reinkamen. Wenn da ein 'Loch' in der Grafik war, war wohl irgendwas mit der Leitung im Eimer ;-) usw.

Wenn Du das noch als MDI implementierst, hast Du ein schönes Spielzeug.

michdan 30. Mai 2005 11:37

Re: suche suchfunktion für grosse log files
 
Hi

Danke für die anregung....Ich mache mir mal an die arbeit....

gruss
michael

alzaimar 30. Mai 2005 11:40

Re: suche suchfunktion für grosse log files
 
Oh, geil, poste das Ding mal. Vielleicht kann ich noch was beitragen :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 Uhr.

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