Logo linux

Envoyer le log de vos programmes et scripts dans syslog

bash
C
PHP
Python


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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.