Joerg: Apache und Herkunfts-bezogenes Logging

Hallo,

mein Apache 2.2.8 läuft auf einem Win2003-Server und ist per DynDNS mit der Welt verbunden ist.

Ich habe (leider) Besucher aus der ganzen Welt: China, Japan, Brasilien, ...

Daher möchte ich erreichen, dass der Apache seine Logfiles abhänigig von der Herkunft des jeweiligen Requests beschreibt. Ist es ein lokaler LAN-Request, soll z.B. access_lan.log bedacht werden. Bei einem www-Request aus dem Internet soll z. B. in access_www.log geschrieben werden.

Auf diese Weise kann ich alles, was von draußen kommt, auf einen Blick erkennen und, wenn erforderlich, Apache oder Router nachjustieren.

Bisher konnte ich zu diesem Thema nichts finden. Ich glaube aber fest daran, dass man mit dem Apache (fast) alles machen kann.

Kennt jemand einen Weg, dies dem Apache auf relativ unkomplizierte  Weise beizubringen?

Danke,
Jörg

  1. Hi,

    Daher möchte ich erreichen, dass der Apache seine Logfiles abhänigig von der Herkunft des jeweiligen Requests beschreibt.

    aber nicht nach der geographischen Herkunft, die ist nämlich schwer bis unmöglich zuverlässig festzustellen.

    Ist es ein lokaler LAN-Request, soll z.B. access_lan.log bedacht werden. Bei einem www-Request aus dem Internet soll z. B. in access_www.log geschrieben werden.

    Das ist kein Problem, hatte ich bei meinem Spiel-Apachen lange Zeit so.
    Mit SetEnvIf setzt du eine Umgebungsvariable abhängig davon, ob die Client-IP mit 127 beginnt (oder zur Netzadresse deines LAN passt). Mit CustomLog wählst du dann abhängig von dieser Umgebungsvariablen eine von mehreren Log-Direktiven aus. Das können neben unterschiedlichen Logdateien auch unterschiedliche Formate sein.

    Bisher konnte ich zu diesem Thema nichts finden. Ich glaube aber fest daran, dass man mit dem Apache (fast) alles machen kann.

    Fast. Mit Schuheputzen tut er sich noch schwer. ;-)

    Ciao,
     Martin

    --
    "Gestern habe ich die Rede des Parteivorsitzenden gehört. Zwei Stunden lang!" - "Worüber?" - "Hat er nicht gesagt."
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hi,
      danke für die schnelle Antwort. Cool - dat löppt:

      LogFormat "%a %l %t "%r" %>s %b "%{Referer}i"" lan
      LogFormat "%a %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" www

      CustomLog "logs/access_lan.log" lan env=locallog
      CustomLog "logs/access_www.log" www env=!locallog

      SetEnvIf REMOTE_ADDR "^192.168." locallog
      SetEnvIF REMOTE_ADDR "^127.0." locallog

      Jetzt würde ich nur noch gerne das Datum mit ins Spiel bringen, aber da macht der Apache wieder nicht mit - z. B. bei

      CustomLog "logs/%Y-%m_access_lan.log" lan env=locallog

      Damit wäre das dann eine richtig runde Sache :)

      Fast. Mit Schuheputzen tut er sich noch schwer. ;-)

      ... ich arbeite gerade an einem Plug-In für unsere Waschmaschine ;)

      Danke,
      Joerg

      1. Hallo,

        Jetzt würde ich nur noch gerne das Datum mit ins Spiel bringen, aber da macht der Apache wieder nicht mit - z. B. bei
        CustomLog "logs/%Y-%m_access_lan.log" lan env=locallog

        das unterstützt der Indianer von sich aus tatsächlich nicht, aber es gibt Zusatzprogramme, die das erledigen. Der Apache schreibt dann nicht mehr direkt in eine Logdatei, sondern in eine Pipe, die von einem weiteren Programm verarbeitet wird. "Log Rotating" sollte dich als Suchbegriff weiterbringen; AFAIK ist ein Programm namens logrotate sogar im Lieferumfang vom Apachen enthalten.

        Damit wäre das dann eine richtig runde Sache :)

        Ja, aber ich gebe zu: Rotierende Logs, aufgeteilt in Dateien mit Datum im Namen habe ich nicht hinbekommen. Das liegt aber vielleicht auch an mir, denn eigentlich liest man immer, das sei ganz einfach. Ich hab damals sehr schnell aufgegeben, weil's mir nicht wichtig genug war.

        Fast. Mit Schuheputzen tut er sich noch schwer. ;-)
        ... ich arbeite gerade an einem Plug-In für unsere Waschmaschine ;)

        Sag Bescheid, wenn der Prototyp mal läuft, das könnte mich auch interessieren. Vielleicht kann ich es dann für die Kaffeemaschine anpassen; die Spezifikation für das dazu passende Protokoll gibt's ja schon geraume Zeit.

        Ciao,
         Martin

        --
        Niemand lebt allein von seinen Träumen.
        Aber wer träumt, lebt noch.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(