newsyslog, la syntaxe des jokers

© Christian PAULUS. Document créé le 5 décembre 2010 , mis à jour le 5 décembre 2010.

Quand on a dix pas à faire, neuf font la moitié du chemin. Proverbe chinois

Accueil du site > Astuces > FreeBSD > newsyslog, la syntaxe des jokers

newsyslog.conf / FreeBSD

Eclater les journaux Apache est assez pratique, voire indispensable, pour la bonne analyse de la fréquentation de vos sites.

Mais un journal de fréquentation, ça grossit ! Et s’il est simple de demander à la commande newsyslog la rotation d’un journal qui prend de l’embonpoint, la démarche est légèrement différente lorsqu’on a à faire à un ensemble de journaux.

Définition des journaux Apache

Dans cet exemple, tous les journaux sont placés dans le répertoire /var/log/httpd. Donc, pour chaque serveur virtuel ciblé, la ligne CustomLog précise le journal de celui-ci. Exemple, dans le fichier de configuration du serveur virtuel de quesaco :

CustomLog /var/log/httpd/quesaco.org.www_access.log combined

Dans la foulée, pour le journal des erreurs :

ErrorLog /var/log/httpd/quesaco.org.www_error.log

Bien sûr, il faut recharger le service proprement (graceful) :

/usr/local/etc/rc.d/apache22 reload

Configurer newsyslog

Le fichier /etc/newsyslog.conf doit préciser les journaux à prendre en charge.
Dans cet exemple, il faut donc y inscrire :

/var/log/httpd/*.log

pour désigner tous les fichiers log présents dans /var/log/httpd/.

La ligne doit être complétée des options nécessaires. Par exemple

/var/log/httpd/*.log    www:www 640  7     1000  *    GB /var/run/httpd.pid 30

qui précise dans ce cas :

  • /var/log/httpd/*.log : tous les fichiers présents dans /var/log/httpd/ et dont le suffixe est « log » sont à prendre en charge ;
  • www:www : les archives appartiennent à l’utilisateur www du groupe du même nom ;
  • 640 : www y a plein accès, le groupe www y a accès en lecture ;
  • 7 : l’historique est de 7 fichiers ;
  • 1000 : le journal doit être archivé si sa taille dépasse les 1000 Ko ;
  • G : le fichier indiqué contient des caractères de substitutions, appelés également motif, jokers ;
  • B : que c’est un fichier binaire. Ce n’est pas le cas ici, mais cette option permet de conserver les archives de ce journal dans son état original ;
  • puis le fichier qui précise le PID d’Apache, et le signal qui lui sera envoyé en fin de traitement.

Suivre les opérations de newsyslog

Pour avoir un suivi des opérations, il suffit d’ajouter l’option -v (verbeux) à newsyslog, qui donc affichera son compte-rendu sur la sortie standard (stdout) :

newsyslog -v

newsyslog est appelé par la commande cron. Le fichier de configuration de cron est /etc/crontab.

Voici la ligne de ce fichier consacrée à newsylog :

# Rotate log files every hour, if necessary.
0      *       *       *       *       root    newsyslog

Dans le cas du cron, il est possible de recevoir par mail le suivi des opérations newsyslog en indiquant en début de fichier l’adesse mail du destinataire. Par exemple, sur Quesaco, voici le début du fichier /etc/crontab :

# /etc/crontab - root's crontab for FreeBSD
#
# $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
MAILTO=cronmaster@quesaco.org

Contrôler la prise en charge des fichiers

Le fait de recevoir un suivi des opérations permet de contrôler le bon déroulement. Par exemple, si vous recevez un message précisant :

/var/log/httpd/*.log <3>: does not exist, skipped.

c’est que vous avez oublié de préciser que la ligne de configuration du fichier /etc/newsyslog.conf est constitué d’un joker (l’astérisque, dans notre cas).

Une petite relecture de la documentation :

man newsylog.conf

vous précisera :

man newsyslog(8)

G       indicates that the specified logfile_name is a shell pattern, and
that newsyslog should archive all filenames matching that pattern, using
the other options specified on this line.  See glob(3) for details on
syntax and matching rules.

qui se traduit par :

G       indique que le nom du fichier de log est un composé d'un motif

Bref ! Il manque l’option G à la ligne de configuration. Voir la ligne d’exemple de newsyslog.conf.

Plussoyez !

Les forums sont fermés.