AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Reader für Apache-Logfiles 0.9 beta
Thema durchsuchen
Ansicht
Themen-Optionen

Reader für Apache-Logfiles 0.9 beta

Ein Thema von Matze · begonnen am 20. Dez 2009 · letzter Beitrag vom 27. Dez 2009
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von Matze
Matze
Registriert seit: 7. Jul 2003
Hi zusammen

Um etwas Abwechslung in meinen Alltag zu bekommen habe ich mir einen kleinen Reader für Apache-Logs geschrieben. Mein Ziel war es, Logs halbwegs schnell durchsuchen zu können.

Voraussetzung:

.NET-Framework 2.0 (ob sonst noch was, weiß ich nicht *g*)

Was das Tool können soll:

- Öffnen von einem oder mehreren Logfiles und hinzufügen von weiteren Logfiles, falls bereits welche geöffnet sind
- Suchfunktion
- Möglichkeit, Einträge aus der Liste zu löschen, um die Liste als Logfile exportieren zu können (um später weiter zu arbeiten oder um Admins o.ä. bestimmtes zu zeigen)
- Drag & Drop von einer oder mehreren Dateien
- Sortierung der Liste beim Klick auf die jeweiligen Kopfzeilen
- Abbrechen der aktuellen Operation (nur bedingt getestet)
- Parameter (Öffnen der Dateien beim Ziehen auf die Exe bzw. über "Öffnen mit ..." aus dem Explorer)

Die GUI ist weitestgehend selbsterklärend. Bei Unklarheiten einfach kurz nachfragen.
Die Labels unter der Liste sind dazu da, dass die Werte eines markierten Eintrags in die Zwischenablage kopiert werden können. Das ist hilfreich, wenn man nach diesen Begriffen suchen möchte (im Tool oder im Internet).

Das Tool ist nichts Großes, aber es diente dazu, dass ich etwas lerne.
Also wer Lust hat und Apachelogs besitzt oder selbst seine Logs durchstöbern möchte, kann gerne testen und Fehler melden. Natürlich sind Kritik und Anregungen ausdrücklich erwünscht.

Screenshot:



Kurz-History:
  • 0.1 b (v. DP1): erste veröffentlichte Version
    0.1 b (v. DP2): Valles Spezi-Log wird unterstützt
    0.1 b (v. DP3): Parameter werden unterstützt
    0.1 b (v. DP4): Nachfragedialog mit "Append", "Replace" und "Cancel" ausgeführt
    0.2 b: Unterstützung der Standard-Logformate "Common", "Combined" und "Vhost Combined"
    0.3 b: Unterstützung der erweiterten Sucheingabe (mehrere Begriffe, Begriffe ausschließen)
    0.4 b: Bugfix: Logs mit DynDNS anstelle der IP-Adresse wurden nicht als gültig angesehen
    0.5 b: Bei bereits geöffneten Dateien erscheint der Nachfragedialog bzgl. "Append" und "Replace" nicht mehr. Anzahl der Einträge in der Statusleiste korrigiert.
    0.6 b: Suchgeschwindigkeit etwas beschleunigt. Kategoriewahl über das Suchfeld möglich (bsp. "ref=google"). Debugmodus integriert.
    0.7 b: Geschwindigkeit ggf. etwas gesteigert. Sofern keine Kategorie festgelegt wurde, wird keine Suche begonnen (sie führt zu keinem Ergebnis). Fehlerhafte Anzeige von "Log Size" in der Statusleiste korrigiert.
    0.8 b: Einlesezeit minimal verkürzt
    0.9 b: Geschwindikgeit optimiert, Icons hinzugefügt

Grüße, Matze

Edit: Fragt bitte nicht, was "Requested Piece" ist.
Angehängte Dateien
Dateityp: zip apachelogreader_0.9b_debug_111.zip (39,7 KB, 39x aufgerufen)
 
Benutzerbild von RWarnecke
RWarnecke

 
Delphi XE8 Enterprise
 
#21
  Alt 22. Dez 2009, 12:21
Zitat von Matze:
@Rolf: Danke für das Feedback.
Wie meinst du das mit der Filterung nach mehreren Spalten?
Wenn ich zum Beispiel wissen will, wie oft eine Datei heruntergeladen wurde. Dann suche ich nach der Datei und dem Status 200. Eine andere Variante wäre, wenn ich Seiten von der URL her umstelle, wie oft welche noch auf die alte Seite zugreifen.
Zitat von Matze:
Und Logfiles mit über 1.000.000 Einträgen habe ich nicht. Das Maximum bei mir sind 137.000 Zeilen und auch da ist die Suche auch etwas träge. Ob man das groß beschleunigen kann, weiß ich nicht. Ich gucke mal, ob sich was machen lässt bzw. was im Programm so lange benötigt.

@Daniel G: Es liegt nicht an der ListView.
Benutzt Du die einfache ListView oder die Virtual ListView ? Wenn ich die Virtual ListView richtig verstanden habe, dann arbeiten die etwas anderst als die normale ListView. Bei der Virtual ListView spielt sich mehr im Speicher ab, sofern ich das verstanden habe. Wenn das so ist, dann bin ich der Meinung, dass Du damit besser fährst.
Rolf Warnecke
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze

 
Turbo Delphi für Win32
 
#22
  Alt 22. Dez 2009, 13:04
Zitat von RWarnecke:
Wenn ich zum Beispiel wissen will, wie oft eine Datei heruntergeladen wurde. Dann suche ich nach der Datei und dem Status 200. Eine andere Variante wäre, wenn ich Seiten von der URL her umstelle, wie oft welche noch auf die alte Seite zugreifen.
Da kannst du doch dann einfach nach der alten Domain suchen, oder nicht?

Zitat von RWarnecke:
Benutzt Du die einfache ListView oder die Virtual ListView ? Wenn ich die Virtual ListView richtig verstanden habe, dann arbeiten die etwas anderst als die normale ListView. Bei der Virtual ListView spielt sich mehr im Speicher ab, sofern ich das verstanden habe. Wenn das so ist, dann bin ich der Meinung, dass Du damit besser fährst.
Jupp, das nutze ich bereits. Die ListView zeigt nur das an, was auch tatsächlich sichtbar ist.

Wärst du so nett und könntest dir bitte mal die Debug-Version aus dem 1. Beitrag herunterladen?
Damit kannst du dann das große Logfile einlesen, einen Suchvorgang starten und dann so lange warten, bis das Suchergebnis erscheint. Anschließend auf den Button "Save Debug ..." klicken und mir die Textdatei zukommen lassen.
Dann bekomme ich eine Vorstellung, in welcher Größenordnung die ganzen Zeiten bei dir liegen. Ich hoffe, die Debug-Version funktioniert.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

 
Delphi XE8 Enterprise
 
#23
  Alt 22. Dez 2009, 13:20
Zitat von Matze:
Zitat von RWarnecke:
Wenn ich zum Beispiel wissen will, wie oft eine Datei heruntergeladen wurde. Dann suche ich nach der Datei und dem Status 200. Eine andere Variante wäre, wenn ich Seiten von der URL her umstelle, wie oft welche noch auf die alte Seite zugreifen.
Da kannst du doch dann einfach nach der alten Domain suchen, oder nicht?
Das mit der Domain war vielleicht ein schlechtes Beispiel. Aber für die Downloads wäre es nicht schlecht.

Zitat von Matze:
Zitat von RWarnecke:
Benutzt Du die einfache ListView oder die Virtual ListView ? Wenn ich die Virtual ListView richtig verstanden habe, dann arbeiten die etwas anderst als die normale ListView. Bei der Virtual ListView spielt sich mehr im Speicher ab, sofern ich das verstanden habe. Wenn das so ist, dann bin ich der Meinung, dass Du damit besser fährst.
Jupp, das nutze ich bereits. Die ListView zeigt nur das an, was auch tatsächlich sichtbar ist.

Wärst du so nett und könntest dir bitte mal die Debug-Version aus dem 1. Beitrag herunterladen?
Damit kannst du dann das große Logfile einlesen, einen Suchvorgang starten und dann so lange warten, bis das Suchergebnis erscheint. Anschließend auf den Button "Save Debug ..." klicken und mir die Textdatei zukommen lassen.
Dann bekomme ich eine Vorstellung, in welcher Größenordnung die ganzen Zeiten bei dir liegen. Ich hoffe, die Debug-Version funktioniert.
[/quote]Werde wir gleich wissen.

Edit : Im Anhang das Debug-Log. Die Apache LOG-Datei hat etwas über 1,1 Mio. Einträge
Angehängte Dateien
Dateityp: txt apachelogreader-debug_485.txt (1,1 KB, 11x aufgerufen)
Rolf Warnecke
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze

 
Turbo Delphi für Win32
 
#24
  Alt 25. Dez 2009, 11:28
Hallo Rolf,

dankeschön. Ich habe nun mit Interfaces experimentiert (Danke @Frederic). Theoretisch müsste die Suche nun schneller sein, wenn man nicht alle Kategorien in die Suche miteinbezieht. Also wenn man beispielsweise nur nach "Referer" und "IP" sucht. Standardmäßig sind daher auch nicht mehr alle Kategorien ausgewählt. Faul wie der Mensch ist, würde er sonst meist alle ausgewählt lassen und das geht natürlich zu Lasten der Suchzeit.
Ich habe eine neue Debug-Version im ersten Beitrag angehängt. Wenn du Zeit und Lust hast, kannst du gerne mal schauen, ob du eine Performance-Steigerung feststellst.
Ich glaube jedoch, dass die Stringvergleiche die meiste Zeit in Anspruch nehmen und muss mal gucken, ob ich das irgendwie schneller machen kann.

An einer neuen Sucheingabe, die Eingaben wie "ref=google ua=ie" unterstützt, arbeite ich gerade. Im Beispiel soll der Referer nach "google" durchsucht werden und der UserAgent nach "ie". Ich hoffe das ist das, was du gemeint hast.

Grüße, Matze
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

 
Delphi XE8 Enterprise
 
#25
  Alt 25. Dez 2009, 12:14
Hallo Matze,

im Anhang das neue Debug-File. Einige Werte haben sich verbessert und andere sind schlechter geworden. Die gefühlte Zeit hat sich allerdings nicht geändert. Gesucht habe ich wieder in dem gleichen File und mit den gleichen Optionen, damit hast Du auf jedenfall eine Referenz.
Angehängte Dateien
Dateityp: txt apachelogreader-debug_142.txt (1,1 KB, 6x aufgerufen)
Rolf Warnecke
  Mit Zitat antworten Zitat
Micha88
 
#26
  Alt 25. Dez 2009, 12:27
Kleine Verbesserung:

Wenn noch kein File geladen wurde, würde ich die Anklickbaren Controls Disablen.

Ab und an bekomm ich eine Exception bei der Suche.
Wann genau, keine Ahnung. Konnte sie bisher nicht rekonstruieren.

Aja, in welcher Sprache ist das geschrieben?
Aber nicht Delphi, oder ?
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze

 
Turbo Delphi für Win32
 
#27
  Alt 25. Dez 2009, 14:43
Version 0.6 beta

Hallo,

@Rolf: Super, danke. Mal sehen, wie ich das weiter optimieren kann (in der 0.6 beta ist das noch unverändert). Das ist gar nicht so einfach.
@Michael: Deinen Vorschlag habe ich umgesetzt und eine neue Version hochgeladen, bei der zusätzlich die Suche überarbeitet wurde. Ich konnte dabei keine AV erzeugen (Sprache ist C#).

Die 0.6 beta bietet nun die Möglichkeit, auch über das Eingabefeld die Kategorien einem einzelnen Suchbegriff zuzuweisen. Die Kategoriekurznamen sind momentan grau hinter die CheckBoxen geschrieben.

Es gibt nun folgende Suchmöglichkeiten:

Suchstring: google ie
Alle angehakten Kategorien werden nach den Begriffen "google" und "ie" durchsucht. Sind beide Begriffe enthalten, handelt es sich um einen Treffer.

Suchstring: google -ie
Alle angehakten Kategorien werden nach den Begriffen "google" und "ie" durchsucht. Ist "google" enthalten und "ie" nicht, handelt es sich um einen Treffer.

Suchstring: google "ie browser"
Alle angehakten Kategorien werden nach den Begriffen "google" und "ie browser" durchsucht. Ist "google" enthalten und "ie browser" (in genau dieser Kombination) ebenfalls, handelt es sich um einen Treffer.

Suchstring: ref=google
Unabhängig davon, welche Kategorien gewählt sind, wird die Kategorie "Referer" nach "google" durchsucht. Wird es gefunden, handelt es sich um einen Treffer.

Suchstring: ref=google ua=-gecko
Unabhängig davon, welche Kategorien gewählt sind, wird die Kategorie "Referer" nach "google" durchsucht und "User Agent" nach "gecko". Ist "google" in "Referer" enthalten und "gecko" nicht im "User Agent", handelt es sich um einen Treffer.


Die Möglichkeiten lassen sich beliebig kombinieren. Wie buggy das Ganze ist, kann ich an dieser Stelle noch nicht sagen.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze

 
Turbo Delphi für Win32
 
#28
  Alt 26. Dez 2009, 13:29
Version 0.8 beta

Ich habe nun versucht, die Einlesezeit noch etwas zu verkürzen und verzichte weitestgehend auf String-Suchfunktionen. Deutliche Performancesteigerungen bekomme ich jedoch nicht hin. Entweder übersehe ich etwas oder .NET stößt hier an seine Grenzen.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze

 
Turbo Delphi für Win32
 
#29
  Alt 26. Dez 2009, 19:18
Version 0.9 beta

Sodele, ich habe nun so eine Art wuppdi-power® eingebaut.

Sowohl das Einlesen als auch das Suchen sollte nun schneller gehen. Der Debug-Modus ist standardmäßig deaktiviert, damit man das ganze ohne Zeitmessung (und somit performanter) testen kann.
Zusätzlich werden die Einträge je nach Statuscode mit einem Icon versehen (404-Fehler beispielsweise rot). Dann sieht man auf den ersten Blick, wo kritische Fehler aufgetreten sind.

@Rolf: Wenn du nochmal so lieb wärst und mir sagen kannst, ob es auch bei dir gefühlsmäßig schneller geworden ist.
@alle anderen: Ihr könnte auch gerne testen!

PS: Was kommt eigentlich nach der 0.9 beta? Die 0.10 beta oder 1.0 beta? Aber 1.0 ist eigentlich keine Beta-Version mehr. (Nein Larsi, eine Versionierung wie "0.1 Alpha 27" mache ich nicht. )

Grüße, Matze
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

 
Delphi XE8 Enterprise
 
#30
  Alt 27. Dez 2009, 08:42
Hallo Matze,

jetzt ist gefühlsmäßig auf jedenfall eine Steigerung drin. Nur was ich nicht ganz verstehe ist, dass Dein Programm beim Einlesen der Datei mir einmal ganz kurz "Keine Rückmeldung" angezeigt hat. Die Suche funktioniert auf einmal richtig schnell. Aber irgendwas musste dran geändert haben, da auf einmal doppelt soviele Ergebnisse erscheinen. Erst hatte ich so etwa um die 65.000 Ergebnisse und jetzt liege ich bei etwas über 140.000 Ergebnisse. Aber wenn es stimmt, bin ich damit zufrieden.
Rolf Warnecke
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:07 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