Jörg Wagner: Apache: Getrennte Logs für Webspace-Unterverzeichnisse

Hallo,

ich betreibe eine Apache mit diversen VirtualHosts.

Ich benötige nun in einem Fall getrennte Logs für die verschiedenen Sprachversionen einer Website. Diese liegen in Unterverzeichnissen (/de/, /en/, /fr/, ...) eines VirtualHosts.

Frage:
Ist es möglich, für verschiedene Unterverzeichnisse eines Virthosts getrennte Logdateien (Access- und Error-Log) führen zu lassen?

  1. Hallo Jörg,

    Ist es möglich, für verschiedene Unterverzeichnisse eines Virthosts getrennte Logdateien (Access- und Error-Log) führen zu lassen?

    Ansich nein. Es wäre abstrus hierfür mod_rewrite einzusetzen (dann ginge es), um die Logs auf V.-Hosts zu verteilen.
    Schreibe Dir Deinem LogFormat entsprehend ein Script, was die Log-Daten trennt, oder arbeite wie SelfHTML mit Subdomains (de. fr.).

    Gruß aus Berlin!
    eddi

    1. Hallo Eddi,

      schade.
      Subdomains sind natürlich eine Lösung, aber ich möchte diesen Weg aus Marketinggründen gerne vermeiden, um Benutzer nicht mit einer URL zu verwirren, die nicht mit  "www.firmenname"  beginnt.
      Ich hatte gehofft, ich könnte die Log-Directiven z.B. irgendwie in Directory-Blöcke kapseln...

      1. Re:

        Ich hatte gehofft, ich könnte die Log-Directiven z.B. irgendwie in Directory-Blöcke kapseln...

        dann setze mod_rewrite ein, wenn es so wichtig ist und Du kein Script einsetzen willst.

        Gruß aus Berlin!
        eddi

  2. Moin!

    ich betreibe eine Apache mit diversen VirtualHosts.

    Ich benötige nun in einem Fall getrennte Logs für die verschiedenen Sprachversionen einer Website.

    Dann trenne das eine Logfile dieses Hosts mit einem kleinen Skript nachträglich auf verschiedene Logfiles auf. Der Vorteil bei Sonderwünschen mit Logfiles ist doch gerade, dass man sich das gewünschte Teil ohne Zeitdruck dann herauspicken kann, wenn man es braucht.

    Ich habe damit noch nicht gearbeitet, aber der Apache sendet auf Wunsch sein Logfile auch an ein Skript zur Nachverarbeitung. Mit Perl und dem darin befindlichen geeigneten reegulären Ausdruck sollte das kein Problem sein, den Output von Apache in mehrere Files zu schieben. Ob ein regelmäßig angestoßenes oder dauern im Hintergrund gehaltenes Perl-Skript nun zuviel Ressourcen frißt, mußt du wissen.

    mod_rewrite würde ich hier vermeiden, denn das wäre der Performance nicht wirklich zuträglich. Es müßte zwingend intern mit Proxy gearbeitet werden, und das bedeutet, für jeden Zugriff auf eine Ressource arbeiten dann gleich zwei Apache-Instanzen statt nur einer.

    Und nochmal zur Klarstellung für uns hier: Wozu brauchst du die geteilten Logfiles genau?

    - Sven Rautenberg

    1. Hallo Sven,
      danke für Deine Antwort.

      Die getrennten Logfiles sollen dazu dienen, für jede der vier Sprachversionen der Website eigene Webalizer-Statistiken zu erstellen.

      Ja, der Apache kann seine Logs durch ein Script pipen. Beliebt ist hier zum beispiel das rotatelog, das die Logs z.B. in Tagslogs splitten kann.
      Ich werde es aber aus Performancegründen wohl vorziehen, mein allnächtliches Webalizer-Script so zu ändern, dass es das Log durchkämmt und aufteilt...

      Seid Ihr wirklich sicher, dass ich die ErrorLog- und CustomLog-Directiven nicht in (z.B.) Location-Blöcke kapseln kann?
      Ich glaub ich probier das einfach gleich mal aus.

      1. Hallo Sven,
        danke für Deine Antwort.

        Die getrennten Logfiles sollen dazu dienen, für jede der vier Sprachversionen der Website eigene Webalizer-Statistiken zu erstellen.

        Ja, der Apache kann seine Logs durch ein Script pipen. Beliebt ist hier zum beispiel das rotatelog, das die Logs z.B. in Tagslogs splitten kann.
        Ich werde es aber aus Performancegründen wohl vorziehen, mein allnächtliches Webalizer-Script so zu ändern, dass es das Log durchkämmt und aufteilt...

        Seid Ihr wirklich sicher, dass ich die ErrorLog- und CustomLog-Directiven nicht in (z.B.) Location-Blöcke kapseln kann?

        Für den 1.3.33 kann ich dies schon mal mit JA beantworten.

        Syntax error on line 103 of /self-o-shop/conf/httpd.conf:
        CustomLog not allowed here

        - vermeldet apache für

        <Location /htdocs>
        CustomLog /self-o-shop/logs/access_log common
        </Location>

        Gruß aus Berlin!
        eddi

        1. Ok - ich tätowier mir selbst ein RTFM auf die Stirn...

          Aus der Apache2-Docu, mod_log_config ( http://httpd.apache.org/docs-2.0/mod/mod_log_config.html ):

          --------------------
          Environment variables can be set on a per-request basis using the mod_setenvif  and/or mod_rewrite modules. For example, if you want to record requests for all GIF images on your server in a separate logfile but not in your main log, you can use:

          SetEnvIf Request_URI .gif$ gif-image
          CustomLog gif-requests.log common env=gif-image
          CustomLog nongif-requests.log common env=!gif-image
          --------------------

          Das sollte einfach zu modifizieren sein, um die Zugriffe auf meine Unterverzeichnisse in getrennte Logs fließen zu lassen.

          Trotzdem Danke für Eure Hilfe - Ihr habt mir auf die Sprünge geholfen.

  3. Hallo!

    Frage:
    Ist es möglich, für verschiedene Unterverzeichnisse eines Virthosts getrennte Logdateien (Access- und Error-Log) führen zu lassen?

    Mit Access-Logs dürfte das recht einfach gehen:
    http://httpd.apache.org/docs-2.0/logs.html
    http://httpd.apache.org/docs-2.0/mod/mod_setenvif.html#setenvif

    Mit Error-Logs wohl eher nicht.

    Grüße
    Andreas

    --
    SELFHTML Tipps & Tricks: http://aktuell.de.selfhtml.org/tippstricks/
      1. Hallo Andreas,

        danke für den Tipp, wir waren in einem anderen Ausläufer dieses Threads schon auf die SetEnv-Lösung gestoßen. Das ist auf jeden Fall der richtige Weg!

        Gruß, Jörg