Fichiers de log

Un fichier unique Les serveurs Web stockent leurs logs dans un seul fichier de log de préférence.
Sur un serveur NCSA ou Apache, le nom de ce fichier est access_log
Sur un serveur CERN, le nom de fichier est httpd-log
dans le fichier de configuration config.pl, vous devez sélectionner : $zip = 0

Les serveurs sous CERN peuvent utiliser un fichier de log différent chaque jour en indexant la date à la fin du nom du fichier de log. Il existe un rectificatif qui permet de régler ce problème (voir www.w3.org). Si cette option vous plait, il est possible d'utiliser w3perl en créant un lien symbolique différent chaque jour sur le fichier de log journalier à l'aide d'une crontab.

Avec les serveurs IIS, les fichiers de log quotidiens ne sont pas un bug mais une spécificité . W3perl est désormais capable de gérer de tels fichiers journaliers.

Fichiers multiples Introduit dans la version 2.30, w3perl est capable de lire des fichiers de log avec des noms configurables.
Sélectionnez dans le fichier de configuration le format des noms de fichiers de log que vous utilisez.

Les noms de fichiers peuvent être ce que vous désirez :

  • filename est la chaine constante dans votre fichier de log (ex : access_log),
  • day est le jour sous forme de deux chiffres (de 01 à 31),
  • month est le mois sous forme de deux chiffres (de 01 à 12),
  • lettermonth est le mois sous forme de 3 lettres avec la première en majuscule (de Jan ` Dec),
  • year est l'année sous forme de quatre chiffres (ex : 1998)
  • smallyear est l'année sous forme de deux chiffres (ex : 98)
  • et suffix est l'extension de compression que vous utilisez sur votre machine (ex : gz ou zip).

Exemples de chaines de format supporté :

  • access_log.1998Mar.gz
  • 1998.03.10.raw.zip
  • log.03-12-1998.gz
  • in.9904


Fichiers
compressés
quotidiennement
Un nombre assez important d'hébergeur fournissent des fichiers de log sous la forme de fichiers journaliers compressés.
Utilisez $zip = 1 et $zipcut = 2 au niveau du fichier de configuration pour sélectionner ce mode.


Fichiers journaliers L'application a besoin d'un fichier de log contenant au moins une journée de log.
Mais si votre site est très fréquenté et que vous décidez de nettoyer votre fichier de log chaque jour pour raison d'espace disque, il est toujours possible d'utiliser w3perl.
Vous devrez déplacer votre fichier de log à minuit vers un autre nom, w3perl lira ce fichier déplacé et vous pourrez ensuite l'effacer. Suivez les instructions suivantes :
  1. A minuit, déplacez votre fichier de log courant (access_log) vers logfile.old (access_log_old)
    Dans votre fichier de configuration, vous devez utiliser ce fichier déplacé (prefixlog doit être égal à access_log_old).
  2. Lancez les stats et ensuite effacer ce fichier déplacé (access_log_old).
  3. Le premier jour, utilisez cron-pages.pl.
    Le jour suivant, utilisez cron-inc.pl....
    Cron-inc.pl ne parcourera que le fichier de log sur la journée précédente donc à son lancement il devra bien lire le fichier déplacé (access_log_old)
  4. N'oubliez pas de lancer cron-hour chaque heure, cron-day une fois par jour, cron-week une fois par semaine. Vous ne pouvez pas utiliser cron-month.pl pour les stats sur les mois, désolé.
Exemple :

    Jour 1
    fichier de log courant log_current tourne de 00 h à 23 h 59

    Jour 2
    Déplacez votre fichier de log courant log_current vers log_previous à 00 h 00
    Un nouveau fichier de log courant log_current tourne de 00 h à 23 h 59
    lancer cron-pages.pl (qui va scanner le fichier log_previous) et ensuite effacez log_previous

    Jour 3
    Déplacez votre fichier de log courant log_current vers log_previous à 00 h 00
    Un nouveau fichier de log courant log_current tourne de 00 h à 23 h 59
    lancez cron-inc.pl (qui va scanner le fichier log_previous) et ensuite effacez log_previous

    Jour 4
    identique au jour 3
    ....

Vous aurez ainsi des statistiques incrémentales avec juste un fichier quotidien. Bien sur, choississez avec attention vos options de configuration dans config.pl car étant donné que vos fichiers de log sont détruits, il n'est pas possible de relancer les stats.


Fichiers
compressés
mensuellement
Les fichiers de log grossissent très vite. Dans le fichier de configuration, utilisez : $zip = 1 et $zipcut = 1 pour sélectionner le mode de fichiers compressés mensuellement.


Faites le vous-même W3Perl utilise le format de fichiers de log compressés depuis plusieurs années. Si vous désirez vous aussi utiliser ce mode qui coupe le fichier de log chaque mois et le compresse ensuite, suivez les instructions suivantes :

Pour modifier vos fichiers de log dans le nouveau format, faites :

  • grep "/<month>/<year>" <logfile> > <logfile>.<monthdigits>-<year>
    où month est le mois avec une chaine de 3 lettres avec la première en majuscule,
    year est un nombre à 4 chiffres
    et monthdigits est le mois avec deux chiffres.
    (eg : grep "/Dec/1994" access_log > access_log.12-1994)

  • gzip <logfile>.<monthdigits>-<year>
    (eg : gzip access_log.12-1995)
    A la fin de la procédure, vous devriez avoir dans votre répertoire des fichiers qui doivent ressembler à ce genre de chose :

      access_log.10-1994.gz
      access_log.11-1994.gz
      access_log.12-1994.gz
      access_log.01-1995.gz

Les fichiers compressés doivent se situer dans le même répertoire que le fichier de log courant. file.
Cela va vous économiser beaucoup d'espace disque (le gain est de 90%)

Les utilisateurs sous NT peuvent utiliser zip au lieu de gzip. Vous aurez donc à la place access_log.01-1995.zip au lieu de access_log.01-1995.gz.


Utilisez squeezelog pour couper et compresser vos fichiers de log chaque mois :

J'utilise un petit script squeezelog qui coupe et compresse le fichier de log chaque mois. Le taux de compression est d'environ 90% du fichier originel.
Il remplace l'utilitaire rotate-log fourni par exemple avec le serveur Apache. Sur un serveur NT, se servir de fichiers de log mensuel serait mon choix personnel excepté si votre site est très fréquenté.
W3Perl fonctionne également plus rapidement dans ce mode car il se contente de ne scanner que le mois courant au lieu d'un gros fichier.

Vous devrez éditer le fichier squeezelog et de le configurer pour votre machine. Ce script doit être ajouter à votre crontab et executer une fois le premier jour de chaque mois.

Exemple :
01 00 1 * * /usr/local/bin/perl /norfolk/www-data/w3perl/squeezelog

(si les fichiers de log appartiennent au super utilisateur, vous devrez donc demander à celui-ci d'effectuer la procédure pour vous).

back