Qu’est-ce que le logging ?
Le système de logging de Laravel s’articule autour de la notion de canaux (channels). Un canal est une unité de configuration qui définit où et comment les logs sont écrits. Vous pouvez combiner plusieurs destinations : fichiers, Slack, syslog, etc. En interne, Laravel utilise la bibliothèque Monolog et profite de ses nombreux handlers et formatters.Par défaut, le canal
stack est utilisé. stack est un canal parent qui regroupe plusieurs autres canaux.Configuration
La configuration du logging est centralisée dansconfig/logging.php. La variable d’environnement LOG_CHANNEL permet de changer le canal par défaut.
Drivers de canal disponibles
Niveaux de log
Laravel prend en charge les 8 niveaux définis par RFC 5424, classés du plus grave au moins grave.
Le paramètre
level d’un canal correspond au niveau minimum.
Par exemple, si level vaut error, seuls les logs de niveau error ou supérieur (critical, alert, emergency) seront écrits.
Utilisation de base
La façade Log
Utilisez la façadeIlluminate\Support\Facades\Log pour écrire un message à chaque niveau.
La fonction helper log()
Le helperlog() évite d’importer la façade Log.
Ajouter du contexte
En passant un tableau de contexte avec le message, vous regroupez les informations utiles associées.withContext() — contexte partagé sur un canal
UtilisezwithContext() pour attacher un contexte commun aux logs suivants sur un canal donné.
C’est particulièrement adapté aux informations que vous voulez retrouver dans tous les logs, comme un identifiant de requête.
shareContext() — contexte partagé sur tous les canaux
withContext() n’agit que sur le canal ciblé, alors que shareContext() propage le contexte à tous les canaux.
Configuration des canaux
Canal stack — écrire simultanément sur plusieurs canaux
Le canalstack écrit à chaque appel dans plusieurs canaux en une seule opération.
debug ou supérieur sont écrits dans daily (fichier), et seuls les critical et plus sont également envoyés sur Slack.
Canal daily — rotation des logs
Le canaldaily sépare les fichiers par date et supprime automatiquement les anciens.
Notifier les erreurs sur Slack
Récupérez une URL d’Incoming Webhook Slack et déclarez-la dans.env.
slack dans le canal stack et de définir LOG_CHANNEL=stack pour que les erreurs soient notifiées automatiquement.
Écrire dans un canal spécifique
Log::channel() cible un canal explicitement.
Canaux à la volée
Log::build() permet de créer un canal personnalisé sans l’ajouter au fichier de configuration.
C’est utile pour les tests ou pour un fichier de log temporaire.
Cas d’usage concrets
Attribuer un identifiant de requête via un middleware
Attribuer un identifiant commun à tous les logs facilite grandement le suivi du parcours d’une requête.1
Créer le middleware
2
Implémenter handle()
3
Enregistrer le middleware
Enregistrez-le comme middleware global dans
bootstrap/app.php.request-id sera automatiquement présente dans tous les logs.
Loguer les alertes de dépréciation
Vous pouvez logger les avertissements liés aux fonctionnalités dépréciées de PHP ou de Laravel..env.
Laravel Pail — supervision des logs en temps réel
Laravel Pail est un outil de développement qui affiche les logs de votre application en temps réel dans le terminal. Contrairement àtail, il fonctionne avec n’importe quel driver de log, y compris Laravel Nightwatch, Sentry ou Flare.
Pail requiert l’extension PHP PCNTL.
Installation
Utilisation de base
Filtrage des logs
Récapitulatif
Comment choisir le niveau de log
Comment choisir le niveau de log
Guide de choix des canaux
Guide de choix des canaux
- Développement :
singleoudailypour écrire dans un fichier. - Production :
stackcombinantdaily(persistance) etslack(alertes). - Logs de traitement spécifique : créer un canal à la volée via
Log::build()pour un fichier dédié. - Supervision temps réel :
php artisan paildepuis le terminal.
Points d'attention en production
Points d'attention en production
- Les logs
debugpeuvent contenir des informations sensibles. En production, préférezLOG_LEVEL=errorou plus élevé. - Faites tourner régulièrement les fichiers pour éviter la saturation disque (paramètre
daysdu canaldaily). - Attention aux limites de débit des services externes comme Slack. Ne notifiez que les erreurs graves en configurant le niveau adéquat.
emergencyalertcriticalerrorwarningnoticeinfodebug