Johannes Dommnich: logfile

Hallo,

für eine wissenschaftliche Studie sollen wir Logfiles erstellen, die vor allem folgende Inhalte haben sollen:

a) der Referrer soll angegeben werden
b) die Zeit, die jmd. auf einer gegebenen Seite verbringt, soll angezeigt werden

Für die Studie wollen wir eine Laborsituation herstellen; ein lokaler Webserver wie Apache oder OmmiHTTP soll installiert werden. Microsoft IIS fällt wohl wegen Kosten flach.
Auf diesem läuft dann die Website (ein webbasiertes Training), das Benutzerverhalten soll in der Logfile abgespeichert werden.

Meine Fragen:

  1. Ich weiss, dass es für den Apache ein zusätzliches Modul gibt, das erst in den Server reinkompiliert werden muß. Wie mache ich das? Ich habe keine C Kenntnisse, habe noch nie was kompiliert. Sollte ich dann lieber die Finger davon lassen?

  2. Gibt es andere Möglichkeiten, die beiden erwähnten Inhalte abzulegen? Eventuell über PHP3?

Grüße,
Johannes

  1. a) der Referrer soll angegeben werden

    Das ist möglich.

    b) die Zeit, die jmd. auf einer gegebenen Seite verbringt, soll angezeigt werden

    Das funktioniert so nicht. Man kann höchstens festellen, wie lang der Abstand zwischen zwei Zugriffen ist - vorrausgesetzt es gibt zwei. Aber ob sich der Benutzer sich die ganze Zwischenzeit mit der Seite beschäftigt hat, ist natürlich ungewiss.

    Meine Fragen:

    1. Ich weiss, dass es für den Apache ein zusätzliches Modul gibt, das erst in den Server reinkompiliert werden muß. Wie mache ich das? Ich habe keine C Kenntnisse, habe noch nie was kompiliert. Sollte ich dann lieber die Finger davon lassen?

    RTFM. Einen Apache zu kompilieren, ist wirklich keine Kunst. C-Kenntnisse sind nicht erfoderlich, Du willst ja nicht programmieren.

    1. Gibt es andere Möglichkeiten, die beiden erwähnten Inhalte abzulegen? Eventuell über PHP3?

    Ja, hier läßt sich zumindest der Referer ermitteln, ebenso, wie mit einem CGI-Skript.

    Peter

  2. Hi Johannes,

    mit Punkt a) solltest Du eigentlich keine Probleme haben, das ist ja eigentlich mehr oder weniger Standard.
    Wie Punkt b) realisiert werden soll, kann ich mir allerdings nicht so recht vorstellen - wie soll denn der Server wissen, wie viel Zeit jemand auf einer Seite verbringt? Die Daten werden übertragen, und das war's - ob das dann zehn Sekunden oder zehn Stunden auf dem Bildschirm steht, kriegt der Server nicht mit.
    Was einem so auf Anhieb einfällt, nämlich das über den nächsten Aufruf einer anderen Seite zu berechnen, hinkt ja auch gewaltig - wenn eine Seite auf einem anderen Server besucht wird, kriegt das Euer Server natürlich nicht mit. Und auch wenn es eine eigene ist - wer sagt denn, dass sie nicht in einem anderen Fenster angezeigt wird und die alte stehen bleibt?
    Die in etwa einzige Chance, die mir so einfällt, ist in jede Eurer Seiten ein onUnload-Script einzubauen, dass Eurem Server sozusagen eine "Abmeldung" zukommen lässt. Natürlich braucht Ihr dann serverseitig wiederum ein Skript, dass diese Messages auffängt, auswertet und den entsprechenden Logfiles zuordnet.
    Keine leichte Hausaufgabe! Äh...BTW: Hat denn, wer immer diese Studie beauftragt hat, irgend eine Ahnung von Logfiles?

    Grüße und Kopf hoch!

    Utz

  3. a) der Referrer soll angegeben werden

    http://www.apache.org/docs/misc/FAQ.html#addlog.
    Sieht für mich nicht nach "compilieren müssen" aus.
    (CustomLog ist Status "Base").

    b) die Zeit, die jmd. auf einer gegebenen Seite verbringt, soll angezeigt werden

    Tja, wenn der Anwender sich denn irgendwie abmelden würde ...
    Diese Information hast Du einfach nicht.

    Das einzige, was Du tun kannst, ist, die Logdatei nach IP-Adresse des Clients zu filtern und danach über den Referer den Weg des Surfers durch Deinen Server zu verfolgen.
    Es besteht eine gewisse *Hoffnung*, daß es immer derselbe Besucher ist, wenn in sequentiell aufeinanderfolgenden Log-Einträgen derselben IP-Adresse jeweils der Referer zum vorherigen Eintrag paßt. Aber "Hoffnung" ist wirklich alles, was ich Dir geben kann.

    1. Ich weiss, dass es für den Apache ein zusätzliches Modul gibt, das erst in den Server reinkompiliert werden muß. Wie mache ich das? Ich habe keine C Kenntnisse, habe noch nie was kompiliert. Sollte ich dann lieber die Finger davon lassen?

    Das kommt auf Deine Plattform an.
    Apache unter UNIX zu "builden" ist wirklich einfach.
    Du startest ein Skript namens "configure", dem Du über die Parameterliste sagen kannst, welche Module (abweichend vom Standard) Du haben willst. Das baut Dir ein passendes Makefile. Der Rest ist einfach nur noch "make" und "make install" - fertig.
    Zu Apache unter Windows kann ich nichts sagen - da habe ich immer nur vorgefertigte Binaries aus dem Web verwendet (aber auch nie mehr gebraucht).

    1. Gibt es andere Möglichkeiten, die beiden erwähnten Inhalte abzulegen? Eventuell über PHP3?

    Der Referer ist nie ein Problem. Die Verweildauer ist immer eines.