Lire les logs symfony en dév

3 minutes
web symfony environnement logs

Comment afficher les logs Symfony en environnement de développement ? Comment formater l'affichage des logs pour que ce soit plus clair ?

Par défaut, les logs Symfony sont très verbeux, car le niveau est à DEBUG.
Changer le niveau de logs à INFO ou WARNING risque de me faire passer à côté de pas mal de choses en cas de problème.
Ce qui m'intéresse c'est de voir facilement le niveau ERROR et CRITICAL, sans perdre le reste.

Pour faire ça, il a deux solutions : passer par l'IDE (ici PhpStorm) ou par la console.

Solution 1 : Les logs Symfony en couleur dans PhpStorm

Lorsque vous ouvrez votre fichier de logs avec PhpStorm, il peut vous proposer de configurer la couleur.
Il utilise les RegExp pour les parser et colorier les lignes.
Voici un exemple sur mon IDE :

Logs symfony en couleur dans PhpStorm

Pour arriver à ce résultat, vous pouvez aller dans la configuration de votre IDE, Editor -> Log Highlighting.
Dans la partie Log Formats, ajoutez une ligne que vous pouvez nommer comme moi : Symfony.
Puis dans les autres champs, on va mettre :

  • Message pattern, on va tout capturer : ^(.*)$
  • Message start pattern: ^\[
  • Time format : yyyy-MM-dd HH:mm:ss
  • Time capture group : 1
  • Severity capture group : 3
  • Category capture group : 2
  • Apply message pattern to all message lines : coché

Les Log formats Symfony dans PhpStorm

Ensuite, on ajoute la configuration pour les patterns :

  • CRITICAL : pattern : ^.*\.CRITICAL.*$, bold, Foreground #FF0000, Background #000000
  • ERROR : pattern : ^.*\.ERROR.*$, bold, Foreground #FF9900
  • WARNING : pattern : ^.*\.WARNING.*$, bold, Foreground #FFFF00
  • INFO : pattern : ^.*\.INFO.*$, Foreground #00D66D

Colorisation des Logs Symfony dans PhpStorm

Évidemment, je vous laisse l'adapter suivant vos besoin !

Solution 2 : Les logs symfony dans la console

Dans cette solution, il s'agit d'utiliser la console pour afficher les lignes qui nous intéressent le plus : ERROR et CRITICAL.
Les 2 commandes utiles sont tail et grep avec le pipe entre les deux.

Ces deux commandes sont disponibles sur MacOS et Linux par défaut, donc pas besoin de les installer.
Pour les utilisateurs de Windows, je vous recommande fortement cet outil : Cmder.

La commande que j'utilise est :

$ tail -f var/log/dev.log | grep -a --color=auto "ERROR\|CRITICAL"

La commande va écouter le fichier de logs et filtrer les lignes contenant les mots clés ERROR ou CRITICAL :

Filtrer les logs symfony en console

L'option tail -f permet d'écouter en continue.
Et l'option grep -a permet de dire à grep qu'il s'agit de texte et pas de données binaires.

Il est possible d'aller encore plus loin avec la commande watch.
Il n'y a plus besoin de passer des lignes pour voir s'il y a eu un changement, comme avec tail.
watch lance une commande toute les n secondes et affiche le résultats.
Il ne reste plus qu'à modifier le nombre de lignes remontées par tail (avec l'option -n 5 par exemple) pour que l'on ne lise que les dernières lignes :

$ watch -n 1 'tail -n 5 var/log/dev.log | grep -a --color=auto "ERROR\|CRITICAL"'

La commande watch n'est pas disponible sur tous les systèmes. Il faudra surement l'installer, même sur certaines distributions Linux

Pour installer watch sur MacOs, vous pouvez passer par Homebrew :

$ brew install watch

Conclusion

C'est quand même bien plus agréable et rapide d'avoir des logs présenté convenablement !
Il est possible de personnaliser tout ça, en fonction de vos besoin.

Et vous ? Utilisez-vous une autre commande ? Ou un outils en particulier ?

Ajouter un commentaire

Article précédent Article suivant