Envoyer le log de vos programmes et scripts dans syslog
Le log est une chose bien utile lorsque l’on développe du soft. Mon premier réflexe est de regarder syslog
quand quelque chose va mal. Nous verrons ici comment envoyer vos message de log à votre serveur syslog
aussi bien en Bash, en Python en C ou encore en PHP.
En Bash
Oui vos scripts aussi peuvent envoyer des message à syslog
, voyez ci-dessous :
$ logger -t MonTag -p user.warning -- "mon message dans syslog" $ tail -n 1 /var/log/syslog Jan 15 11:02:11 ikaros MonTag: mon message dans syslog
Vous trouverez plus d’information sur les niveaux de gravité et les options supplémentaires via la commande man logger
.
En Python
En Python, vous avez plusieurs moyen de logging. Le premier que j’ai utilisé est avec la lib logging mais il est beaucoup trop complexe pour faire uniquement du scripting. Dans ce cas l’utilisation de la lib syslog est nettement plus appropriée.
import syslog syslog.openlog("MonTag") syslog.syslog(syslog.LOG_DEBUG, "Log Message from Python")
Vous pouvez bien sur utiliser d’autre niveau de log comme LOG_EMERG, LOG_CRIT, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG et d’autre que vous trouverez dans la doc de la lib syslog de Python.
Résultat obtenu :
$ tail -n 1 /var/log/syslog Jan 15 11:10:09 ikaros MonTag: Log Message from Python
En C
En C, vous pouvez utiliser la fonction syslog
comme ci-dessous ou encore utiliser la fonction log_print
que je vous présente dans l’article sur les arguments variadiques
#include <stdlib.h> #include <syslog.h> int main (int argc, char *argv[]) { openlog("MonTag", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_USER); syslog(LOG_DEBUG, "Mon message %d syslog depuis un code %s", 3, "C"); closelog(); exit(EXIT_SUCCESS); }
Vous retrouverez l’ensemble des options dans le manuel via la commande man 3 syslog
.
Résultat obtenu :
$ tail -n 1 /var/log/syslog Jan 15 11:21:31 ikaros MonTag[3057]: Mon message 3 syslog depuis un code C
En PHP
Enfin en PHP, le code ressemble quelque peu au code en C
<?php openlog("MonTag", LOG_PID, LOG_USER); syslog(LOG_DEBUG, "mon message 4 depuis un script PHP"); closelog();
Résultat :
$ tail -n 1 /var/log/syslog Jan 15 11:27:40 ikaros MonTag[1449]: mon message 4 depuis un script PHP
Conclusion
Vous savez maintenant envoyer vos message de log dans syslog
, reste maintenant à configurer le serveur syslog
pour trier vos logs correctement mais c’est une autre histoire.