Gestion des logs d'Apache 2.0 sous Windows

Eléphant du PHP | 245 Messages

31 mars 2010, 17:46

Bon, je ne suis pas spécialiste du tuning Apache.
Pour ne pas me faire b... avoir par des fichiers de log trop importants, j'effectue une rotation des logs avec la directive suivante:

Code : Tout sélectionner

CustomLog "|D:/Program\ Files/Apache\ Group/Apache2/bin/rotatelogs.exe D:/Program\ Files/Apache\ Group/Apache2/logs/archives/access.log.%Y-%m-%d 604800" common
En gros je dis à l'executable rotatelogs.exe de recréer un nouveau fichier de log de la forme
"access.log2010-03-31" tous les 7 * 24 * 3600 seconde = toutes les semaines.

Bon, en gros, cela ne marche pas top mal.
Mais récemment, j'ai eu l'idée saugrenue de vouloir faire une rotation des logs journalière, du coup j'ai remplacé 604800 par 86400!
Assez anodin comme modif...
Et pourtant là tout s'emballe, à chaque fois que je recharge une page, mon serveur fait du zèle, il me charge une dizaine de ligne de log par rechargement de page :
DU genre : les requètes pour l'affichage des images et des scripts, tout y passe!

Code : Tout sélectionner

10.39.39.101 - - [29/Mar/2010:17:47:19 +0200] "GET /fr/xtcore.js HTTP/1.1" 304 - 10.39.39.101 - - [29/Mar/2010:17:47:19 +0200] "GET /fr/css/images/bloc_middle_rond.png HTTP/1.1" 304 - 10.39.39.101 - - [29/Mar/2010:17:47:19 +0200] "GET /fr/css/images/picto_rond_blanc_fleche.gif HTTP/1.1" 304 - 10.39.39.101 - - [29/Mar/2010:17:47:19 +0200] "GET /fr/css/images/logo_socgen.gif HTTP/1.1" 304 - 10.39.39.101 - - [29/Mar/2010:17:47:19 +0200] "GET /fr/css/images/bandeaux/undefined HTTP/1.1" 404 414 10.39.39.101 - - [29/Mar/2010:17:47:20 +0200] "GET /fr/css/images/accueil_hover.gif HTTP/1.1" 304 - 10.39.39.101 - - [29/Mar/2010:17:47:20 +0200] "GET /fr/css/images/reprendre_hover.png HTTP/1.1" 304 - 10.39.39.101 - - [29/Mar/2010:17:47:20 +0200] "GET /fr/css/images/vendre_hover.png HTTP/1.1" 304 - 10.39.39.101 - - [29/Mar/2010:17:47:20 +0200] "GET /fr/css/images/deposer_hover.png HTTP/1.1" 304 - 10.39.39.101 - - [29/Mar/2010:17:47:20 +0200] "GET /fr/css/images/sefaire_accompagner_hover.png HTTP/1.1" 304 - 10.39.39.101 - - [29/Mar/2010:17:47:20 +0200] "GET /fr/css/images/annuaire_hover.jpg HTTP/1.1" 304 - 10.39.39.101 - - [29/Mar/2010:17:47:20 +0200] "GET /fr/css/images/moncompte_hover.png HTTP/1.1" 304 - 10.39.39.101 - - [29/Mar/2010:17:47:20 +0200] "GET /fr/css/images/onglet_acquereur_hover.gif HTTP/1.1" 304 - 10.39.39.101 - - [29/Mar/2010:17:47:20 +0200] "GET /fr/css/images/onglet_cedant_hover.gif HTTP/1.1" 304 -

Moi, je veux bien qu'on m'explique comment paramètrer les logformats pour n'enregistrer que les connexions de nouveaux clients et pas toutes les requètes HTT¨P sous jacentes.

Mais surtout ce que j'aimerais comprendre, c'est pourquoi mes fichiers de log pèsent 50 Mo quand ils sont paramétré sur 1 jour alors qu'ils font 50Ko quand ils sont parametrés sur une semaine.
Parce que à la limite, il y a trop de requètes enregistrées si je fais la rotation jour par jour et pas assez si je la fais semaine par semaine.

ViPHP
ViPHP | 5462 Messages

31 mars 2010, 18:29

tu peu faire des log dans une base de donnée si tu veux :wink:

Eléphant du PHP | 245 Messages

01 avr. 2010, 09:33

oui, ça pourrait prendre moins de place?
Mais c'est chaud là, depuis que j'ai modifié le truc, ça me met dans le log, toutes les requetes y compris les images, les fichiers JS...


et sinon, y a pas une petite directive dans le httpd.conf à paramétrer?
Je sais que pour les logs d'erreurs, on peut définir le niveau.

Y a pas un truc semblable pour les logs d'acces?

Eléphant du PHP | 245 Messages

01 avr. 2010, 16:12

bon alors, en fait :
1) la différence lorsqu'on paramètre la durée des rotations à 1 jour ou une semaine, c'est les moments d'écriture dans le fichier de log. Biensur Apache va pas ouvrir toutes les x secondes un fichier qui ne se change toutesles semaines alors qu'il le fait pour un fichier qui se change tous les jours.
Car n'étant pas bète Apache se doute bien que le fichier se changeeant toutes les semaines sera plus volumineux que celui qui se change tous les jours. Du coup les ecritures dans le fichier de log sont plus espacés lorsqu'il tourne toutes les semaines.
C'est pour cela que j'ai eu l'impression à vu d'oeil que ce dernier grossissais moins vite qu'un log journalier.

2) En ce qui concerne, les requetes qu'on va inscrirre dans le fichier de log, celles ci peuvent être conditionnées grâce à une variable d'environnement définie avec des expressions régulières.

Code : Tout sélectionner

# bon, on n'a pas envi de logger forcément toutes les requetes concernant images, javascript,iframe etc... #du coup on définit une variable d'environnement pour pallier à cela : SetEnvIf Request_URI "(\/fr\/affiche_bandeaux.html$)|((.*)(\/css\/)(.*)$)|((\.gif|\.GIF|\.jpg|\.JPG|\.jpeg|\.JPEG|\.png|.PNG|\.js|\.css|\.ico)$)" fichierssanslogs CustomLog "|D:/Program\ Files/Apache\ Group/Apache2/bin/rotatelogs.exe D:/Program\ Files/Apache\ Group/Apache2/logs/archives/fusacq.log.%Y-%m-%d 604800" common env=!fichierssanslogs


On demande donc de logguer toutes requetes sauf celles corrspondant à la variable d'environnement fichierssanslogs (qui sont les images, les scripts, les feuilles de style et certaines iframe)
Voilà pour mon problème, il faudrait encore que je regarde comment faire de même sur IIS et après c'est bon.

Pour ce qui est des logs en base de données:
Pour stocker les logs dans une base MySQL, on peut télécharger le module mod_log_sql ici je crois http://www.outoforder.cc/projects/apache/mod_log_sql/

Mais pour l'instant je n'en ai pas vraiment l'utilité