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.
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 :
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 :
^(.*)$
^\[
yyyy-MM-dd HH:mm:ss
1
3
2
Ensuite, on ajoute la configuration pour les patterns :
^.*\.CRITICAL.*$
, bold, Foreground #FF0000
, Background #000000
^.*\.ERROR.*$
, bold, Foreground #FF9900
^.*\.WARNING.*$
, bold, Foreground #FFFF00
^.*\.INFO.*$
, Foreground #00D66D
Évidemment, je vous laisse l'adapter suivant vos besoin !
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
:
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
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 ?