Log-Datei auslesen

Status
Nicht offen für weitere Antworten.

Replica

Mitglied
Guten Morgen!

Ich plane grade ein Programm zum Auslesen von Log-Dateien.
Das Szenario sieht so aus, dass die Dateien, während ich auf sie zugreife ständig weitergeschrieben werden und das die Auswertung der Dateien alle paar Sekunden auf den neusten Stand gebracht werden soll.

Ich habe mir das nun so vorgestellt einen Thread zu starten, in dem GUI intialisiert, die Config des Programms eingelesen und die Dateien geöffnet werden.
Dann sollen sie in einem extra Thread auf bestimmte Werte durchsucht werden, der sich dann immer wiederholt, bis das Programm geschlossen wird und prüft, ob neue Zeilen hinzugekommen sind, diese in der Auswertung hinzufügt und selbige ausgibt.
Erst wenn das Programm geschlossen wird, soll der Stream geschlossen werden.

Ist das so möglich?
Ich lese Dateien immer mit BufferedReader->InputStreamReader->FileInputStream(file) aus. Bleibt der Steam dabei auch offen, wenn ich das Ende der Datei erreicht habe (ich wüsste nicht, was dagegen spräche, aber ich meine sowas schon mal gehört zu haben)?
 

Joker

Bekanntes Mitglied
dann du musst aber aufpassen, dass die Logdateien möglichst klein sind, sonst wird das langsam. Auch das sperren der Logdatei ist nicht so einfach zu realisieren, da kommt es dann immer drauf an, dass das die Logdatei beschreibende Programm damit zurecht kommt, das die Logdatei auch mal für ein paar Sekunden nicht schreibbar ist.

Wesentlich günstiger ist es die Logdatei komplett zu kopieren und mit der Kopie zu arbeiten. Zum Überwachen der Datei bietet es sich an mit Inotify und co zu arbeiten (in Java realisiert z.B. durch jnotify).

Irgendwo hab ich noch ein Perl Skript rumliegen, dass diverse Logs per inotify überwacht und den Inhalt formatiert in eine DB schreibt. Wenn dir das was hilft kann ich dir das gerne schicken.
 

Replica

Mitglied
Erst schon mal danke für deine Antwort!

Ich denke mal (max.) 40 MB an Log-Dateien ist schon recht viel ;)
Werden die Dateien auch gelockt, wenn ich nur lese? Geschrieben wird dort nicht. Wenn ich die erst kopiere, dauert es noch länger :/

Aus den Logs soll eine Statistik erzeugt werden, die sich ständig aktualisieren soll und quasi in "Echtzeit" (alle paar Sek ein Update reicht) laufen soll.

Ich habe mir grade mal JNotify angeguckt, aber soweit ich das verstehe, muss das auch auf dem ausführenden Computer installiert sein.
Kennt da vielleicht jemand eine andere Alternative?

Oder einen anderen Ansatz, eine ständig weitergeschriebene Datei ständig vollständig ausgelesen zu halten?
 

Joker

Bekanntes Mitglied
musst du ausprobieren was in deinem Fall besser ist. Ich hatte ein Linux als Zielplattform. Da hat es sich angeboten eine Kopie zu erstellen und die Orginaldatei immer bis leer zu halten. Statistiken hab ich dann später auch erzeugt (inkl. schöne JFreeChart Grafiken), aber dann halt basierten auf den Daten des zentralen Logservers, der die Logdaten von 4 anderen Servern (apache, dns, syslog, etc...) und von zwei Firewalls bekommen hat.

Ich habe mir grade mal JNotify angeguckt, aber soweit ich das verstehe, muss das auch auf dem ausführenden Computer installiert sein.
Kennt da vielleicht jemand eine andere Alternative?

Installieren musst du da nichts. JNotify nutzt die Funktionen des Betriebssystem. INotify ab Kernel 2.6.13 auf Linuxsystemen und die WinAPI auf Windowssystemen. Man muss dann natürlich die native Bibliothek mitliefern. Der Vorteil davon ist natürlich das die Bearbeitung der Datei sofort startet und keine sekundenlange Wartezeit dazwischen liegt und das dein Programm wirklich nur aktiv wird, wenn Veränderungen in der Logdatei stattfinden.
 

Replica

Mitglied
Bin zu doof für JNotify. Ich kriege das nicht integriert.
Habe eigentlich alles gemacht, wie es auf der Homepage steht, aber geht nicht.
Muss ich nochmal schauen, wie ich das löse.

Aber die Dateien sind doch beim Lesen nicht gelockt, oder?
 

Escorter

Bekanntes Mitglied
Ich hab es bei mir so realisiert, dass ich mir merke wieviel Zeichen ich schon eingelesen haben.

Dann überspringe ich am Anfang die anzahl der Zeichen und lese alle neu dazu gekommenen zeichen ein.

Das ganze läuft in nem Thread mit einer Endlosschleife.

Habe immer wieder getestet und die Dateien wurden nie gelockt.
Das einzige Problem was umgangen werden muss ist, dass man auch schonmal die Datei ließt wenn die Datei nciht zu Ende geschrieben wurde. Als ambesten kommt ein Steuerzeichen an den ANFANG einer zeile (Zeilen werden von hinten geschrieben) damit du erkennst ob die Zeile komplett geschrieben wurde.

Und dann kannst du immer die neuen Zeilen auswerten und speicherst du neue Anzahl der Zeichen.

//Edit: Auch bei Logfiles > 500 MB gab es keine Probleme

Gruß,
Esco
 

Replica

Mitglied
Escorter hat gesagt.:
Ich hab es bei mir so realisiert, dass ich mir merke wieviel Zeichen ich schon eingelesen haben.

Dann überspringe ich am Anfang die anzahl der Zeichen und lese alle neu dazu gekommenen zeichen ein.
Könntest du mir das bitte mal genauer erläutern?
Zählst du die Zeilen mit und springst dann beim nächsten Durchlauf an die entsprechende Stelle? Wie genau springe ich an die ensprechende Stelle in der Datei zurück, die ich mir vorher gemerkt habe?

/edit-add:
Kann ich einfach mit einem RandomAccessFile auf die Datei zugreifen, dann einfach mit readLine() einlesen, bis null. Da die Zeiger-Position mit getFilePointer() speichern und dann beim nächsten Aufruf mit seek() dort weiter machen?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
Gaudimagspam CSV-Datei auslesen in Java Allgemeine Java-Themen 7
B .txt Datei erstellen und auslesen bzw. schreiben Allgemeine Java-Themen 6
N Txt Datei auslesen. Allgemeine Java-Themen 5
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
O xlsx Datei auslesen mit POI von Apache wirft seltsamen Fehler. Allgemeine Java-Themen 11
S Hilfe bei dem Auslesen einer YAML Datei Allgemeine Java-Themen 8
T Url aus txt Datei auslesen und öffnen? Allgemeine Java-Themen 4
T Datei Byteweise auslesen Allgemeine Java-Themen 1
T Ini Datei auslesen Allgemeine Java-Themen 3
J Wav-Datei aus .jar auslesen Allgemeine Java-Themen 7
D CSV Datei auslesen Allgemeine Java-Themen 23
J Java JSON-Datei aus .Zip auslesen und Download mit Progress Bar Allgemeine Java-Themen 20
A Auslesen einer Datei sowie ausgeben als Liste in App Allgemeine Java-Themen 5
T datei auslesen ind der richtigen reihenfolge Allgemeine Java-Themen 2
B Compiler-Fehler NullPointerException beim Auslesen von .lang-Datei Allgemeine Java-Themen 3
P Swing Icon von Exe Datei auslesen Allgemeine Java-Themen 8
M datei aufruf datum auslesen Allgemeine Java-Themen 5
D .txt Datei Auslesen Allgemeine Java-Themen 2
H Icon einer Datei auslesen Allgemeine Java-Themen 2
J Problem beim Auslesen einer Datei vom Server Allgemeine Java-Themen 4
C Auslesen + Bearbeiten einer UTF8 Datei Allgemeine Java-Themen 5
A Applet Jar Datei auslesen Allgemeine Java-Themen 3
S String aus Datei-Zeile auslesen Allgemeine Java-Themen 6
F Datei aus JAR auslesen Allgemeine Java-Themen 11
D Swing Datei vom Webserver auslesen Allgemeine Java-Themen 3
W Datei auslesen und die Daten weiter verarbeiten Allgemeine Java-Themen 4
D Pfad aus Ressource-Datei auslesen Allgemeine Java-Themen 7
C Datei auslesen wie unter Linux mit "tail -f" Allgemeine Java-Themen 3
I Große Datei am effektivsten/performantesten auslesen und auswerten? Allgemeine Java-Themen 6
hdi Auslesen der Farbwerte einer Grafik-Datei Allgemeine Java-Themen 4
M Frage zum Auslesen einer Datei auf nem Server Allgemeine Java-Themen 4
K need help ; Werte aus einer Datei auslesen Allgemeine Java-Themen 4
V Erstelldatum einer Datei auslesen Allgemeine Java-Themen 4
M Problem mit Zeichen aus einer Datei auslesen Allgemeine Java-Themen 2
multiholle Länge einer MP3-Datei auslesen Allgemeine Java-Themen 2
R Parser: Datei auslesen, Datei erstellen - Geschwindigkeit Allgemeine Java-Themen 16
G Blind-Datei (Passwort auslesen) Allgemeine Java-Themen 5
A CSV-Datei (Spalt A -> Excel) in Array packen und auslesen Allgemeine Java-Themen 25
Daniel_L Mehrere (XML-)Datei aus einer ZIP-Datei auslesen Allgemeine Java-Themen 4
Daniel_L XML-Datei aus Zip-Datei auslesen, ohne temporär zu entpacken Allgemeine Java-Themen 12
W Variablenbelegung aus Datei auslesen Allgemeine Java-Themen 2
A Auslesen von Strings aus einer xls-Datei Allgemeine Java-Themen 16
P Pfad der gerade ausgeführten Jar-Datei auslesen Allgemeine Java-Themen 2
L Werte in externer Datei speichern und wieder auslesen? Allgemeine Java-Themen 8
E Eine .wsp datei in java öffnen auslesen und verändern Allgemeine Java-Themen 4
MQue Datei einlesen/auslesen Allgemeine Java-Themen 4
A Problem mit dem Auslesen aus einer Datei Allgemeine Java-Themen 4
J XML-Datei byteweise einlesen und Kodierung auslesen Allgemeine Java-Themen 4
J Zeilenweise in Datei schreiben/auslesen Allgemeine Java-Themen 3
M Array in eine Datei Schreiben und wieder auslesen Allgemeine Java-Themen 10
H strings in datei verschlüsseln , auslesen mit klartext aber! Allgemeine Java-Themen 2
zilti Datei dekomprimieren und auslesen Allgemeine Java-Themen 16
X Manifest Datei auslesen? Allgemeine Java-Themen 3
W Datei und druckerfreigaben von lokalem Rechner auslesen. Allgemeine Java-Themen 2
K Text-Datei auslesen Allgemeine Java-Themen 3
D Zeilenweises auslesen aus einer Unicode CSV-Datei Allgemeine Java-Themen 7
F PDF-Datei auslesen Allgemeine Java-Themen 5
M Datei immer auslesen können, auch im JAR Allgemeine Java-Themen 7
S BibTex-Datei auslesen Allgemeine Java-Themen 2
H Datei auslesen und in einem Textfeld ausgeben. Allgemeine Java-Themen 8
M MP3 Datei selber parsen/werte auslesen Allgemeine Java-Themen 13
S Tonspuren einer Midi Datei auslesen Allgemeine Java-Themen 2
L Auslesen einer Datei mit Floats Allgemeine Java-Themen 4
L Merkwürdiger Fehler beim auslesen einer Datei Allgemeine Java-Themen 2
M datei informationen auslesen Allgemeine Java-Themen 16
F Datei auslesen - wo ist mein Fehler? Allgemeine Java-Themen 9
L Werte aus einer Datei auslesen Allgemeine Java-Themen 18
M Auslesen von Daten aus einer txt Datei fast funktionierend Allgemeine Java-Themen 2
I Dateiattribute (Erstellungsdatum aus Datei auslesen) Allgemeine Java-Themen 7
G Einzelne Keys aus Properties-Datei auslesen Allgemeine Java-Themen 4
J Auslesen UTF-8 Datei Allgemeine Java-Themen 3
D Excel-Datei mit Java auslesen Allgemeine Java-Themen 1
S Titel aus HTML-Datei auslesen Allgemeine Java-Themen 5
G Adressen in Datei speichern und wieder auslesen Allgemeine Java-Themen 3
kodela StatusBar-Anzeigen auch in Log-Datei ausgeben Allgemeine Java-Themen 3
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
E XML - Datei Darstellung in IntelliJ als Baum Allgemeine Java-Themen 2
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
J Filenotfoundexception obwohl Datei existiert Allgemeine Java-Themen 6
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
E Datei verschoben Event Allgemeine Java-Themen 3
D Datei mit "Kohsuke GitHub API" in Repository hochladen Allgemeine Java-Themen 2
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
Neumi5694 Datei komprimiert Allgemeine Java-Themen 6
_user_q Obfuscate einer .jar-Datei mit ProGuard? Allgemeine Java-Themen 2
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
E java mithilfe url .jar datei öffnen Allgemeine Java-Themen 9
E Java .exe Datei mit args starten Allgemeine Java-Themen 2
W Bilder werden in App mit Jar-Datei nicht angezeigt Allgemeine Java-Themen 15
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
M Excel Datei Erstellen Allgemeine Java-Themen 2
E Input/Output Eigene Datei mit java öffnen Allgemeine Java-Themen 9
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
Tobero Download .jar von github lädt kaputte Datei runter Allgemeine Java-Themen 3
P Bat Datei in Java ausführen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben