"tail -f" auf ein großes Logfile über Webinterface (CGI)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ohrwurst
User
Beiträge: 2
Registriert: Freitag 16. September 2011, 20:16

Hi,

ich suche eine quick'n'dirty (gerne auch elegante :-)) Möglichkeit, ein

Code: Alles auswählen

tail -f <datei>
im Webrowser anzuzeigen (für Windows-Leute: das wirft einfach fortlaufend die letzten Zeilen einer (stetig fortgeschriebenen) (Log-)Datei aus). Standalone ist so etwas sehr schön unter http://code.activestate.com/recipes/157 ... python/#c4 gelöst - ich benötige das aber über einen Webserver, soll heißen: ich möchte über einen Browser eine URL (CGI) aufrufen, welche mir das Ergebnis "live" für eine auf dem Webserver befindliche Datei auswirft. Gerne auch mit jQuery / AJAX Kram, whatever ... (naja, bitte nicht jedesmal das ganze File wieder komplett rüberpusten, denn es ist recht groß ;-).

Any ideas?

Danke im Voraus!
ohrwurst
User
Beiträge: 2
Registriert: Freitag 16. September 2011, 20:16

Hab's selbst gelöst. Mit AJAX ist das kein Problem und Dank http://www.degraeve.com/reference/simpl ... xample.php reichen selbst meine bescheidenen JavaScript Kenntnisse aus. Falls es jmd. interessiert, ich gehe wie folgt vor:

Das Python Script arbeitet einfach pro Aufruf mit einem file.seek Parameter und wirft ab da n Zeilen raus. Der seek-parameter wird clientseitig als Javascript verwurstelt, soll heißen: bei jedem Durchlauf liefert das Python-CGI (neben den Zeilen aus dem Logfile, die ich in eine Textbox appende) die letzte file.seek Position an den Browser zurück und bei der nächsten Anfrage poste ich diesen wieder per Javascript als Parameter an das CGI, so dass es an der richtigen Stelle weiterliest.

Ganz einfach. (Wenn man mal 'ne Nacht drüber schläft. :)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Kurze Nachfrage, da Du von CGI redest: Kennst Du Flask oder Bottle? Damit kannst Du Dir CGI sparen und auf WSGI setzen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten