Accueil Technologies Laravel x Slack : recevoir une alerte en cas de problème (exceptions, erreurs…)
Laravel & Slack

Laravel x Slack : recevoir une alerte en cas de problème (exceptions, erreurs…)

par Jérémy PASTOURET

Vous redoutez de rater une erreur 500 de Laravel en production ? Grâce à ce tutoriel, soyez averti·e au moindre souci.

On est jamais à l’abri d’un bug critique, d’une boucle infinie qui se termine par un timeout, d’une base de données qui ne répond plus, etc. Lorsque cela arrive, on risque de perdre des utilisateurs – ou pire, des early-adopters. On augmente aussi la consommation de ressources, et donc notre impact écologique. Pour minimiser ces risques, vous pouvez créer des pages d’erreurs sympathiques. Et surtout, être alerté·e le plus rapidement possible avec des données concrètes pour réparer le problème. Dans cet article, je vais vous montrer comment rester bien informé·e lorsqu’une erreur survient sur un projet conçu avec le framework Laravel.

Pré-requis pour être automatiquement alerté·e avec Laravel

Bannière - Où trouver notre Podcast - Les Enovateurs

Pour que votre projet Laravel communique avec votre espace de travail Slack, vous devez créer un Webhook. Et ça tombe bien : j’ai publié un tutoriel détaillé sur le sujet.


A lire aussi : Slack – envoyer des messages / notifications avec des apps (Web, mobile & PC)

Comment être alerté·e par Slack lorsqu’une erreur survient ?

Bannière métro - Pourquoi passer au Dark mode ou mode sombre

La communauté de Laravel propose en effet différents modes pré-conçus pour gérer les logs. Dans le lot des possibilités actuelles, nous retrouvons Slack.

1ère étape : éditez le fichier config/logging.php

2ème étape : rendez-vous dans la section stack :

Ajout du log Slack dans la stack Laravel

Vous devez ajouter le terme slack dans le tableau channels du driver stack. En effet, Laravel prend par défaut les systèmes de logs définis dans le driver stack. On le sait car au dessus de ce tableau, nous retrouvons cette ligne :

'default' => env('LOG_CHANNEL', 'stack'),

Nous avons maintenant indiqué au projet Laravel qu’il y a deux canaux activés pour transmettre les logs.

ℹ️ Le mode single inscrit les logs dans le fichier laravel.log. Mais si vous ne voulez plus utiliser ce système, il suffit de supprimer l’élément ‘single‘.

3ème étape : paramétrez les canaux Slack dans le même fichier logging.php. Plus bas, vous trouverez ce tableau de configuration de Slack :

Configuration de Slack dans Laravel

Quelques explications :

  • driver : indique à Laravel qu’il faut utiliser le système Slack pré-codé.
  • url : contient l’URL du webhook. Je vous conseille de laisser la variable d’environnement.
  • username : modification recommandée (mais avec un risque de perte de temps élevé… car on cherche tou·te·s un nom fun).
  • emoji : même remarque que pour username.
  • level : c’est le paramètre le plus important. Pour quel niveau de criticité souhaitez-vous être alerté ? Je vous invite à mettre debug pour en tester le bon fonctionnement. Par la suite, passez à critical. Ce sera plus écologique – et vous ne serez pas spammé·e tous les secondes. Pour information, voici les différents niveaux disponibles :
debug, info, notice, warning, error, critical, alert, emergency

4ème étape : ajoutez l’URL du webhook dans les variables d’environnement. Ouvrez le fichier .env présent à la racine de votre projet. Puis ajoutez-y la variable suivante, suivie de l’URL de votre webhook.

Webhook - Slack - Laravel

Dernière étape : actualisez la configuration de Laravel en lançant la commande suivante :

php artisan cache:clear
php artisan config:clear

Il ne vous reste plus qu’à commettre délibérément une erreur dans votre code. Si vous êtes en manque d’inspiration, laissez un·e enfant avec votre code et un clavier 😁. Ensuite, accédez à la page contenant un bug pour obtenir la notification Slack.

Voici une démonstration :

Résultat final - Laravel & Slack

✋ Avez-vous réussi le tutoriel ? Connaissez-vous d’autres solutions de notification d’erreur ? Y compris avec d’autres plateformes…

Photo de couverture : Tyler Nix

Laisser un commentaire

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