Gestion des logs avec PHP

2010, Apr 06    

Je me suis aperçu la dernière fois que tout le monde ne connaissait pas la puissance des logs qu’intègre directement PHP. Du coup, pour essayer de rectifier cela, je me suis dit qu’un petit article valait le coup :)

Tout d’abord, et parce que vous avez le droit de ne pas connaître, qu’est ce qu’un log ?

C’est tout bête et ça simplifie la vie. Cela peut grandement vous aider à vous sortir d’un mauvais pas. Il s’agit d’enregistrer les erreurs dans un fichier. Cela vous sert d’historique par exemple. Un fichier de log se présente de cette façon (ou cela s’approche en tout cas) :

[01-Apr-2010] PHP Parse error:  syntax error, unexpected '}' in /Applications/www/index.php on line 6

On y retrouve donc souvent la date, l’erreur et le fichier avec la ligne concernée. Pratique n’est ce pas ?

Et comment mettre cela en place avec le système de log propre à PHP ? Pas compliqué du tout.


Première étape : Configurer le serveur

Normalement, vous devriez déjà avoir fait cela sur votre serveur. J’y fait mention dans l’article sur la gestion des erreurs php en production (relatif à un article sur le blog de Méthylbro)

Il vous faut donc activer le système de log et définir un fichier de log. Cela se fait via deux lignes de votre php.ini fétiche.

log_errors = On

error_log = /www/log/log.txt

Vous pouvez aussi affiner votre configuration en ignorant les erreurs répétées. Cela vous permettra d’y voir plus clair dans votre fichier en regroupant 100 lignes en 1 seule par exemple. Pour cela il vous faut activer la directive : ignore_repeated_errors

ignore_repeated_errors = On

Une fois cela en place, vous pouvez utiliser les logs dans votre développement.

Deuxième étape : utilisation du système

Nous allons nous attarder sur l’utilisation manuelle du système. Je reviendrai dans un autre article sur l’utilisation d’un journal système.

Le pivot de cette utilisation est la fonction error_log().

Nous allons ici voir plusieurs utilisations. Tout d’abord une utilisation « basique ». Une simple écriture dans le fichier défini dans votre php.ini :

error_log(‘une erreur est survenue ici’);

Mais cette fonction est bien plus puissante que ça !!! Vous pouvez aussi être prévenu par mail d’une erreur. Il vous faudra l’utiliser ainsi :

error_log(‘une erreur est survenue ici’, 1, ‘votre_mail@mail.fr’);

Le 1 est ici pour indiquer que vous désirez être prévenu de cette erreur à l’adresse mail qui suit. Être prévenu par mail est une bonne pratique, quitte à vous mettre une adresse dédiée à cela. Je parle ici une fois votre site en publication et non plus en production.

En effet, lorsque quelqu’un vient pirater votre site, il efface bien souvent son passage des logs. Cependant, si vous êtes prévenu par mail il ne pourra y toucher vu que cela sera stocké sur un autre serveur. Pas mal non ?

Enfin, vous pouvez aussi dire à la fonction d’utiliser un autre fichier en utilisant le paramètre 3.

error_log(‘une erreur est survenue ici’, 3, ‘votre_fichier.txt’);

Et voilà, vous savez ce qu’il y a à savoir sur le système de log php. Si vous avez des questions ou des astuces à partager n’hésitez pas à laisser un commentaire !