Le log qui se voulait plus gros que le boeuf
Par hr le jeudi 21 février 2008, 17:52 - système - Lien permanent
C'est généralement au moment où on se retrouve avec une partition pleine que l'oubli de la rotation des logs refait surface. C'est ultra-classique et pourtant... Mais nous allons prendre les devants pour que lighty ne soit pas un mangeur d'espace.
Sur FreeBSD, le gestionnaire de rotation de log de base s'appelle newsyslog(8), il est configuré par le fichier /etc/newsyslog.conf (newsyslog.conf(5)). Je suis habitué à logrotate(8) et j'aime bien conserver tous mes fichiers de logs d'activité web, je vais donc faire la même chose avec newsyslog(5). Je souhaite donc faire tourner mes logs tous les jours à minuit, compresser les logs passés et les conserver ad vitam eternam. Ces contraintes donnent l'entrée suivante dans le fichier de configuration :
# lighttpd rotates /var/log/lighttpd/lighttpd.access.log www:www 640 366 * @T00 JC
il faut spécifier un champ de gestion d'appartenance (propriétaire et groupe), lighttpd écrit les logs avec les droits www:www et ils seront déplacés en changeant le propriétaire en root:www.Les fichiers seront créés avec les droits 640, le champ suivant spécifie que les fichiers sont sauvegardés 366 fois avant d'éliminer les fichiers les plus anciens (1 an). Les 2 champs suivant provoquent une rotation à minuit tous les jours. Le dernier champ précise qu'on compresse les archive de log en bzip2 et que le fichier est créé si il n'existe pas.
Le champ 'count' n'est pas exhaustivement décrit dans la page de man, et j'espérais pouvoir utiliser une valeur qui me permettrait d'avoir un nombre infini de fichiers de logs. La lecture du code source m'a confirmé que je ne pouvais pas utiliser le même type de fonctionnement que pour logrotate(8).
Une entrée doit être créée pour chaque fichier de log de chaque vhost.