Apache-Logfile mitlesen

04/01/2013 - 21:57 von Matthias Hanft | Report spam
Hallo,

ich würde gerne (von PHP aus oder auch von einem compilierten C-
Programm, ist egal) das Apache-Logfile mitlesen und bei bestimmten
Eintràgen bestimmte Dinge tun. Also eigentlich müßte ich sowas
wie "tail -f" nachprogrammieren. Hab von "tail" schon mal den
Source überflogen, aber das ist wohl Kanonen auf Spatzen...

Ich weiß im Prinzip mit inotify umzugehen, ist das das Mittel
der Wahl? Oder einfach alle paar Sekunden mal die Lànge checken
und dann weiterlesen, wenns lànger geworden ist? Oder überhaupt
immer wieder mal lesen, und wenn plötzlich kein EOF mehr ist,
steht was neues drin?

Oder einfach ein Shellskript, das den realen "tail -f"-Output
einliest?

Welche Variante überlebt auch ein logrotate? Apache fàngt ja
irgendwann mal eine neue Datei an. Da müßte man dann die Lànge
aus dem Verzeichnis ermitteln und bei neuer Lànge (die auch
kürzer sein kann) die Datei erst neu aufmachen, die letzten
ca. 200 Bytes ($MAXLINELENGTH, von mir so definiert :-) )
lesen und nach dem (vor)letzten suchen? Oder so?

Wie macht man das am besten?

Danke & Gruß Matthias.
 

Lesen sie die antworten

#1 Helmut
04/01/2013 - 22:09 | Warnen spam
Hallo, Matthias,

Du meintest am 04.01.13:

ich würde gerne (von PHP aus oder auch von einem compilierten C-
Programm, ist egal) das Apache-Logfile mitlesen und bei bestimmten
Eintràgen bestimmte Dinge tun. Also eigentlich müßte ich sowas
wie "tail -f" nachprogrammieren. Hab von "tail" schon mal den
Source überflogen, aber das ist wohl Kanonen auf Spatzen...

Ich weiß im Prinzip mit inotify umzugehen, ist das das Mittel
der Wahl?



Nein - passt nicht.

Oder einfach alle paar Sekunden mal die Lànge checken
und dann weiterlesen, wenns lànger geworden ist? Oder überhaupt
immer wieder mal lesen, und wenn plötzlich kein EOF mehr ist,
steht was neues drin?



Was Du vorhast, könnte ins Umfeld von "fail2ban" hineinreichen.

Oder einfach ein Shellskript, das den realen "tail -f"-Output
einliest?



Im Prinzip macht auch "fail2ban" so etwas.

Viele Gruesse
Helmut

"Ubuntu" - an African word, meaning "Slackware is too hard for me".

Ähnliche fragen