Apache Logs · 4 min read · Jan 28, 2026

Division des journaux Apache avec vlogger

Division des journaux Apache avec vlogger

Version 1.0
Auteur : Falko Timme

Vlogger est un petit outil avec lequel vous pouvez écrire des journaux Apache répartis par hôtes virtuels et par jours. Avec vlogger, nous devons simplement mettre une directive CustomLog dans notre configuration Apache globale, et il écrira des journaux d’accès pour chaque hôte virtuel et chaque jour. Par conséquent, vous n’avez pas à diviser le journal d’accès global d’Apache en journaux d’accès pour chaque hôte virtuel chaque jour, et vous n’avez pas à configurer Apache pour écrire un journal d’accès par hôte virtuel (ce qui pourrait vous faire manquer rapidement des descripteurs de fichiers).

À la fin de ce tutoriel, je vous montrerai comment utiliser webalizer pour créer des statistiques à partir des journaux d’accès Apache.

Je ne donne aucune garantie que cela fonctionnera pour vous !

1 Remarque préliminaire

J’ai testé vlogger sur un système Debian Etch où Apache2 est déjà installé et fonctionne.

2 Installation et configuration de vlogger

Pour installer vlogger, nous exécutons simplement

apt-get install vlogger

Ensuite, nous devons modifier la ligne LogFormat (il y a plusieurs lignes LogFormat - changez au moins celle qui est nommée combined) dans /etc/apache2/apache2.conf. Nous devons ajouter la chaîne %v au début :

vi /etc/apache2/apache2.conf

| [...] #LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined [...] |

Ensuite, ajoutez la ligne CustomLog suivante au même fichier (vous pouvez la mettre directement après la ligne LogFormat) :

vi /etc/apache2/apache2.conf

| [...] CustomLog "| /usr/sbin/vlogger -s access.log /var/log/apache2" combined [...] |

C’est la seule directive CustomLog dont nous avons besoin dans toute notre configuration Apache. Veuillez désactiver toutes les autres directives CustomLog, en particulier dans vos configurations d’hôtes virtuels !

L’avantage d’écrire juste un journal d’accès est que cela réduit beaucoup la charge sur le serveur, surtout si vous avez des sites à fort trafic sur votre serveur.

Maintenant, redémarrez Apache :

/etc/init.d/apache2 restart

Vlogger va maintenant créer des sous-répertoires dans le répertoire /var/log/apache2, un par hôte virtuel, et il créera des journaux d’accès qui contiennent la date actuelle dans le nom de fichier. Il créera également un lien symbolique appelé access.log qui pointe vers le fichier journal actuel.

Supposons que nous ayons deux hôtes virtuels, www.example.com et www.test.tld. Alors voici à quoi ressemblera le répertoire /var/log/apache2 :

/var/log/apache2/
www.example.com/
06042007-access.log
06052007-access.log
06062007-access.log
access.log -> 06062007-access.log
www.test.tld/
06042007-access.log
06052007-access.log
06062007-access.log
access.log -> 06062007-access.log

Pour savoir quelles autres directives de ligne de commande vlogger vous pouvez mettre dans la ligne CustomLog, jetez un œil à

man vlogger

3 Création de statistiques avec webalizer

Dans ce chapitre, je vais vous montrer comment vous pouvez créer des statistiques à partir des fichiers journaux divisés avec webalizer. Encore une fois, je suppose que vous avez deux hôtes virtuels, www.example.com et www.test.tld, et que ces hôtes virtuels ont les racines de documents /var/www/www.example.com/web et /var/www/www.test.tld/web (il est important que les noms de serveur soient dans les chemins de racine de documents, sinon la procédure suivante ne fonctionnera pas). J’aimerais mettre les statistiques dans les répertoires /var/www/www.example.com/web/stats et /var/www/www.test.tld/web/stats, donc ceux-ci doivent déjà exister.

Tout d’abord, installons webalizer :

apt-get install webalizer

Jetez un œil à

man webalizer

pour voir comment fonctionne webalizer. En gros, pour créer des statistiques pour www.example.com à partir du journal d’accès d’hier, vous pouvez utiliser cette commande :

/usr/bin/webalizer -c /etc/webalizer/webalizer.conf -n www.example.com \
-s www.example.com -r www.example.com -q -T -o /var/www/www.example.com/web/stats \
/var/log/apache2/www.example.com//bin/date -d "1 day ago" +%m%d%Y-access.log

( /etc/webalizer/webalizer.conf est l’emplacement du webalizer.conf par défaut de Debian. /bin/date -d “1 day ago” +%m%d%Y imprime la date d’hier exactement de la manière dont nous en avons besoin afin que nous puissions passer le journal d’accès d’hier à webalizer sans avoir besoin de connaître la date exacte.)

Bien sûr, nous ne voulons pas exécuter une telle commande manuellement pour chaque hôte virtuel, c’est pourquoi nous écrivons un petit script shell qui lit le répertoire /var/log/apache2 et crée des statistiques pour chaque hôte virtuel qui a des journaux dans ce répertoire. Je nomme le script webstats et le place dans le répertoire /usr/local/sbin :

vi /usr/local/sbin/webstats

| #!/bin/sh logdir=/var/log/apache2 webalizerconf=/etc/webalizer/webalizer.conf yesterdaysdate=`/bin/date -d "1 day ago" +%m%d%Y` cd ${logdir} for directory in * do if [ -d ${directory} ]; then /usr/bin/webalizer -c ${webalizerconf} -n ${directory} \ -s ${directory} -r ${directory} -q -T -o /var/www/${directory}/web/stats \ ${logdir}/${directory}/${yesterdaysdate}-access.log fi done exit 0 |

Nous devons rendre ce script exécutable :

chmod 755 /usr/local/sbin/webstats

Enfin, nous créons un cron job qui appelle le script /usr/local/sbin/webstats chaque nuit à 04h00 :

crontab -e

| 0 4 * * * /usr/local/sbin/webstats &> /dev/null |

Après que le cron job ait été exécuté pour la première fois, vous pouvez aller sur www.example.com/stats et www.test.tld/stats pour voir les statistiques dans votre navigateur. Il est conseillé de protéger par mot de passe les répertoires de statistiques avec .htaccess/.htpasswd.

4 Liens

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.