Apache access logs πρόβλημα

Τεχνικές και μόνο Συζητήσεις για WEB hosting servers, Mail servers, DNS servers. Όχι αναζήτηση υπηρεσιών εδώ!

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Apache access logs πρόβλημα

Δημοσίευση από cherouvim » 08 Αύγ 2007 17:53

Για το domain example.com έχω την εξής δήλωση:

httpd.conf

Κώδικας: Επιλογή όλων

<VirtualHost xx.xxx.xx.xx&#58;80>
    DocumentRoot /home/www.example.com/site
    ServerName www.example.com
    ErrorLog /home/www.example.com/logs/error_log
    CustomLog /home/www.example.com/logs/access_log "combined"
</VirtualHost>
Η οποία παράγει το εξής log:

access_log

Κώδικας: Επιλογή όλων

64.229.111.27 - - &#91;08/Aug/2007&#58;16&#58;12&#58;54 +0300&#93; "GET /foo/index.html HTTP/1.1
64.229.111.27 - - &#91;08/Aug/2007&#58;16&#58;12&#58;54 +0300&#93; "GET /bar/index.html HTTP/1.1
64.229.111.27 - - &#91;08/Aug/2007&#58;16&#58;12&#58;54 +0300&#93; "GET /bar/about.html HTTP/1.1
Μετά ταΐζω το access_log σε κάποιο webalizer/awstats για να βλέπω τα στατιστικά.
Το πρόβλημά μου είναι οτι το example.com έχει 2 sites πάνω του. Όπως φαίνεται στο log, είναι το example.com/foo και το example.com/bar.

Πως θα μπορούσα να παράγω 2 access_log αρχεία αναλόγως το site;
Αλλιώς, πως γίνεται το webalizer να μου δείχνει stats ξεχωριστά για το κάθε ένα;

Θα προτιμούσα να γίνεται με απευθείας λύση, και να μην χρειάζεται post-processing λύση στο access_log (με κάποιο πρόγραμμα που θα μου τα χωρίσει).

υ.γ., δεν μπορώ να στήσω subdomains foo.example.com και bar.example.com, που θα μου έλυνε το πρόβλημα.

sibas
Honorary Member
Δημοσιεύσεις: 1852
Εγγραφή: 21 Φεβ 2003 01:21
Τοποθεσία: Μια εδώ.. Μια εκεί.. Σήμερα είμαι εδώ!!!
Επικοινωνία:

Apache access logs πρόβλημα

Δημοσίευση από sibas » 09 Αύγ 2007 03:01

Αυτό που ζητάς μόνο με κάποιο πρόγραμμα γίνετε δηλαδή να σου διαχωρίσει τα στατιστικά, ειδάλλως μόνο μια λύση σου μένει, subdomain

sibas
Honorary Member
Δημοσιεύσεις: 1852
Εγγραφή: 21 Φεβ 2003 01:21
Τοποθεσία: Μια εδώ.. Μια εκεί.. Σήμερα είμαι εδώ!!!
Επικοινωνία:

Apache access logs πρόβλημα

Δημοσίευση από sibas » 09 Αύγ 2007 03:34

Με προβλημάτισε λιγάκι και το έψαξα λίγο παραπάνω, mod_rewrite (ίσως) να μπορεί να σε βοηθήσει.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Apache access logs πρόβλημα

Δημοσίευση από cherouvim » 11 Αύγ 2007 17:15

Τη λύση δίνει η SetEnvIf και η δυνατότητα conditional logging του CustomLog του apache.

Κώδικας: Επιλογή όλων

<VirtualHost xx.xxx.xx.xx&#58;80>
    DocumentRoot /home/www.example.com/site
    ServerName www.example.com 
    ErrorLog /home/www.example.com/logs/error_log
    SetEnvIf Request_URI "/foo.*" subsite_foo
    SetEnvIf Request_URI "/bar.*" subsite_bar
    CustomLog /home/www.example.com/logs/access_log_foo combined env=subsite_foo
    CustomLog /home/www.example.com/logs/access_log_bar combined env=subsite_bar
</VirtualHost>

sibas
Honorary Member
Δημοσιεύσεις: 1852
Εγγραφή: 21 Φεβ 2003 01:21
Τοποθεσία: Μια εδώ.. Μια εκεί.. Σήμερα είμαι εδώ!!!
Επικοινωνία:

Apache access logs πρόβλημα

Δημοσίευση από sibas » 12 Αύγ 2007 21:14

Ωραίος θα το δοκιμάσω αύριο :lol:

Άβαταρ μέλους
Cha0s
SysAdmin
Δημοσιεύσεις: 10242
Εγγραφή: 28 Ιούλ 2001 03:00

Apache access logs πρόβλημα

Δημοσίευση από Cha0s » 24 Αύγ 2007 16:22

Σωστός ο Γιάννης!

Πολύ χρήσιμο αυτό, thanks for sharing :)

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Apache access logs πρόβλημα

Δημοσίευση από cherouvim » 27 Απρ 2008 00:50

Η SetEnvIf λέει το εξής:
Request_URI - the resource requested on the HTTP request line -- generally the portion of the URL following the scheme and host portion without the query string.
See the RewriteCond directive of mod_rewrite for extra information on how to match your query string.
Αν τα sites μας (foo και bar) έχουν URLs της μορφής:

Κώδικας: Επιλογή όλων

http&#58;//www.example.com/?subsite=foo&page=5
http&#58;//www.example.com/?subsite=bar&page=26
τότε δεν γίνεται να τα πιάσουμε με το Request_URI γιατί αυτό δεν περιέχει το query string (οτιδήποτε μετά το χαρακτήρα "?").

Η λύση έρχεται από το τεράστιο αλλά και δύστροπο RewriteCond και γίνεται κάπως έτσι:

Κώδικας: Επιλογή όλων

<VirtualHost xx.xxx.xx.xx&#58;80>
    DocumentRoot /home/www.example.com/site
    ServerName www.example.com
    ErrorLog /home/www.example.com/logs/error_log
    RewriteEngine on
    RewriteCond %&#123;QUERY_STRING&#125; .*subsite=foo.*
    RewriteRule &#40;.*&#41; $1 &#91;E=subsite_foo&#58;1&#93;
    RewriteCond %&#123;QUERY_STRING&#125; .*subsite=bar.*
    RewriteRule &#40;.*&#41; $1 &#91;E=subsite_bar&#58;1&#93;
    CustomLog /home/www.example.com/logs/access_log_foo combined env=subsite_foo
    CustomLog /home/www.example.com/logs/access_log_bar combined env=subsite_bar
</VirtualHost>

Απάντηση

Επιστροφή στο “Apache, IIS, DNS Servers”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 2 επισκέπτες