Apache und Herkunfts-bezogenes Logging
Joerg
- webserver
0 Der Martin0 Joerg
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
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
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
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