[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Rotation des logs



Le Friday 04 September 2009 09:20:49 Alain JUPIN, vous avez écrit :
> Le jeudi 03 septembre 2009 à 12:24 +0200, Olivier a écrit :
> > Bonjour,
> >
> > Le document http://www.debian-administration.org/articles/117 donne
> > l'exemple d'Apache.
> >
> > Il semble que certaines applications ont besoin d'être redémarrées (ou
> > au minimum, d'être informées de l'évènement) après une rotation des
> > logs et d'autres pas.
> > Cette observation empirique personnelle est-elle exacte ?
> >
> > Si oui, comme le mécanisme de rotation est externe aux applications,
> > comment expliquer cette différence ?
> >
> > Slts
>
> Pour ma part, pour la rotation des logs j'utilise un script perso (car
> je n'aime pas la methode de logrotate)
>
> Avant de faire la rotation, je vérifie si le fichier est ouvert par :
> lsof /var/log/nomdulog
>
> Si le fichier est ouvert, juste après la rotation, je redémarre le
> service.
> Du coup, plus besoin d'indiquer si il faut redemarrer ou pas le service.
>
>
> --
> Alain
> Les pieds sur Terre, la tête dans les étoiles
Salut;

Je me permet simplement d'ajouter que "logrotate" est conçu pour faciliter 
l'administration surtout avec ses configurations séparées par service. Il est  
alors possible d'affiner nos critères de rotation. 

Par exemple, pour un service Web:

# /etc/logrotate.d/lighttpd:

/var/log/lighttpd/*.log {
	errors webmaster
	compress
	daily
	create 644 lighttpd lighttpd
	prerotate
		# Cette ligne est exécutée avant permutation du journal
		/etc/lighttpd/scripts/update_stats.sh > /dev/null
	endscript
	postrotate
		# Ces lignes sont exécutées après permutation du journal
		if [ -f /var/run/lighttpd.pid ]; then
			/etc/init.d/lighttpd restart > /dev/null
		fi
	endscript
}

Dans cette exemple, il est demandé d'exécuter du code avant rotation du 
journal, et de même qu'après rotation. Il est alors tout à fait possible 
d'ajouter une/des condition(s) pour vérifier si il est vraiement pertinent de 
redémarre le service, avec par exemple la méthode d'Alain en 
combinant "lsof".

J'oubliai, "logrotate" est lancé par un travail "cron", ce n'est pas un 
service de type deamon ou lancé en tâche de fond persistent.


@+
-- 
(o_
(/)_
S e r g e


Reply to: