Depuis pas mal de temps, je me casse les dents sur la dérivation des logs envoyés au démon rsyslog, utilisés pas défaut dans Ubuntu. En effet, j’ai installé un tvheadend sur mon serveur / media center pour avoir à la TV dans tous mes XBMC/Kodi, et le mode debug est un peu trop verbeux à mon goût.
La configuration de base de rsyslog est fait par défaut dans “/etc/rsyslog.d/50-default.conf”. Pour qu’un fichier particulier soit traité en premier, comme dans Apache, il faut en créer un nouveau.
Par exemple, j’ai créer les fichiers suivants :
[19:54 user@home ~] > ll /etc/rsyslog.d/* -rw-r--r-- 1 root root 483 Apr 9 21:40 /etc/rsyslog.d/10-tvheadend.conf -rw-r--r-- 1 root root 465 Apr 9 21:40 /etc/rsyslog.d/11-dhcpd.conf -rw-r--r-- 1 root root 469 Apr 9 21:50 /etc/rsyslog.d/12-postfix.conf -rw-r--r-- 1 root root 311 Mar 17 2012 /etc/rsyslog.d/20-ufw.conf -rw-r--r-- 1 root root 1.7K Apr 9 21:52 /etc/rsyslog.d/50-default.conf
Ces fichiers contiennent les dérivations suivantes :
[19:54 user@home ~] > cat /etc/rsyslog.d/10-tvheadend.conf # Put tvheadend log in a specific log file if $programname == 'tvheadend' then /var/log/tvheadend/tvheadend.log & stop [19:54 user@home ~] > cat /etc/rsyslog.d/11-dhcpd.conf # Put isc-dhcpd-server log in a specific log file if $programname == 'tvheadend' then /var/log/dhpcd.log & stop [19:54 user@home ~] > cat /etc/rsyslog.d/12-postfix.conf # Put postfix log in a specific log file if $programname == 'tvheadend' then /var/log/postfix.log & stop
Il faut ensuite simplement reloader/restarter le service rsyslog pour prendre en compte ces changements, et vérifiez que vos fichiers sont bien crées (il peut subsister des problèmes de droits, surtout lorsque vous avez créer un dossier spécifique comme dans le cas de tvheadend).
A noter qu’il existe beaucoup d’options pour filtrer par programname, severity, ou de manière plus puissante par regex. Dans le cas ou vous souhaiteriez faire ceci, RFTM !
Ensuite, il ne faut oublier de configurer la rotation des logs (dans mon cas, j’ajoute un restart du process, car je n’ai pas de ‘status‘ pour le démon tvheadend dans mon init.d) :
[20:05 user@home ~] > cat /etc/logrotate.d/tvheadend /var/log/tvheadend/*.log { daily missingok rotate 7 compress delaycompress notifempty create 640 syslog adm sharedscripts postrotate /etc/init.d/tvheadend restart endscript }
Puis forcer la rotation (-f) ou débuguer (-d)
[20:09 user@home ~] > sudo logrotate -d /etc/logrotate.conf reading config file /etc/logrotate.conf [...] reading config file tvheadend [...] rotating pattern: /var/log/tvheadend/*.log after 1 days (7 rotations) empty log files are not rotated, old logs are removed switching euid to 0 and egid to 104 considering log /var/log/tvheadend/tvheadend.log log does not need rotating not running postrotate script, since no logs were rotated switching euid to 0 and egid to 0
Vous trouvez alors la rotation des logs :
[20:11 user@home ~] > ll /var/log/tvheadend/ -rw-r----- 1 syslog adm 12K Apr 11 20:11 tvheadend.log -rw-r----- 1 syslog adm 48K Apr 11 09:50 tvheadend.log.1
Bon amusement !