Logs PHP avec syslog
Pendant longtemps j’ai cherché comment uniformiser les logs de mes applications PHP, et plus particulièrement des nombreux scripts en ligne de commande qui s’exécutent régulièrement (oui, je suis un grand fan de PHP en ligne de commande) et des applis web quand elles génèrent une erreur. Pour aller droit au but : j’ai trouvé (mais ça, vous vous en doutiez) et maintenant j’utilise du syslog partout. Mais patience, je vais y venir.
D’abord qu’est-ce que j’entends par “logs” ? Il y a bien sûr tous les messages d’erreurs, que ce soit des erreurs générées par PHP (genre “la base de données ne répond plus”) ou des erreurs générées manuellement (genre “c’est quoi ce bordel je devrais jamais tomber dans ce cas là”). Mais il y a également les messages d’informations sur l’état d’avancement du script en ligne de commande (que personne ne lit mais qui pourront peut-être être utile le jour où le script va faire n’importe quoi) ou encore les messages de debug (pratique pour le développement). Pour les applications web, toutes les erreurs génèrent un code HTTP 500 et une page d’erreur propre pour le client, mais j’aimerais bien pouvoir garder une trace de ce qui a foiré.
Pour un script en ligne de commande
Pour cette partie je vais essayer de détailler le plus possible, mais il vaut mieux être familier avec les systèmes Unix, car cela concerne exclusivement des scripts qui sont exécutés avec la SAPI CLI (plus d’infos dans la doc de PHP).
Affichage standard
Au départ, reflexe de programmeur PHP, j’utilisais simplement les fonctions echo (ou printf), mais ça devient vite un casse-tête de filtrer les messages selon leur niveau d’importance. Et quand le script n’est pas lancé en ligne de commande (par exemple s’il est lancé via une cron), ces messages ne sont plus visibles. Il est cependant possible de les archiver en redirigeant le flux de sortie standard vers un fichier. Mais il faut penser faire la rotation de ce fichier de log manuellement (voir logrotate) et on se retrouve vite avec une multitude de fichiers de log éparpillés sur le disque, ce qui ne facilite pas la maintenance.
Exemple, pouet.php contient :
echo "pouet\n";
On redirige le flux :
$ php pouet.php > /tmp/pouet
Clavier qwerty après passage à Woody
Maintenant que la Woody est stable je ne sais pas si il y toujours ce problème, mais à l’époque de la version Potato le apt-get -u dist-upgrade transformait le clavier azerty en qwerty après reboot…
Ma petite histoire
Je crois que tout est dit, j’ai mis à jour la Potato et je me suis retrouvé après reboot devant l’invite de login sans pouvoir taper mon mot de passe vu que c’était du qwerty. Il m’a fallu regarder un schéma de clavier qwerty pour finalement retrouver les caractères spéciaux qu’il me manquait…
La solution
Une fois loggué en root :
dpkg-reconfigure console-data
Choisir “Select keyboard from arch list” puis “azerty” et enfin “French with Euro” (ou without, au choix). Et voila un clavier azerty, ouf !