Qu’est-ce que la journalisation
La journalisation Laravel est conçue autour du concept de channels. Un channel est une unité de configuration qui définit où et comment écrire les logs : fichier, Slack, syslog… vous pouvez combiner plusieurs destinations. En interne, Laravel utilise Monolog, avec ses nombreux handlers et formatters.Par défaut, le channel
stack est utilisé. stack regroupe plusieurs channels sous un channel parent.Configuration
La configuration se trouve dansconfig/logging.php. La variable LOG_CHANNEL change le channel par défaut.
Drivers de channel disponibles
| Driver | Description |
|---|---|
single | Écrit toutes les logs dans un seul fichier |
daily | Un fichier par jour (avec rotation) |
slack | Envoie un message à un webhook entrant Slack |
stack | Channel parent qui regroupe plusieurs channels |
syslog | Écrit dans le syslog du système |
errorlog | Écrit dans le journal d’erreurs de PHP |
monolog | Spécifie directement un handler Monolog |
custom | Personnalisation complète via une factory |
Niveaux de log
Laravel supporte les 8 niveaux de RFC 5424, du plus grave au moins grave.| Niveau | Exemple d’usage |
|---|---|
emergency | Système entier inutilisable, intervention immédiate |
alert | État exigeant une intervention humaine immédiate (perte de connexion à la DB) |
critical | Défaut grave où une fonctionnalité majeure ne fonctionne plus |
error | Erreur d’exécution, à traiter (souvent sans urgence) |
warning | Problème potentiel : API dépréciée, données inattendues |
notice | Fonctionnement normal mais info à remonter |
info | Log opérationnel : connexion, validation de commande |
debug | Détails de débogage en développement |
level d’un channel indique le niveau minimum enregistré.
Par exemple, level à error n’écrit que error et au-dessus (critical, alert, emergency).
Utilisation de base
Façade Log
Utilisez la façadeIlluminate\Support\Facades\Log pour écrire chaque niveau.
Helper log()
Le helper log() évite l’import de la façade Log.
Ajouter des données de contexte
Passez un tableau de contexte pour attacher des informations liées.withContext() — Contexte commun à un channel
Pour appliquer un contexte commun à tous les logs suivants d’un channel, utilisez withContext().
Idéal pour un identifiant de requête.
shareContext() — Contexte commun à tous les channels
withContext() ne s’applique qu’au channel visé ; shareContext() s’applique à tous les channels.
Configuration des channels
Channel stack — écrire vers plusieurs channels
Le channel stack écrit vers plusieurs destinations en un seul appel.
debug et supérieurs vont dans daily (fichier), mais seuls les critical et supérieurs partent vers slack.
Channel daily — rotation
daily crée un fichier par jour et supprime automatiquement les anciens.
Notifications d’erreur Slack
Récupérez une URL de Incoming Webhook Slack et placez-la dans.env.
slack dans stack et définissez LOG_CHANNEL=stack : les erreurs déclenchent une notification automatique.
Écrire dans un channel précis
Log::channel() cible explicitement un channel.
Channels à la demande
Log::build() crée un channel personnalisé à la volée, sans le déclarer dans la configuration.
Pratique pour des sorties temporaires ou lors des tests.
Cas d’usage pratique
Attribuer un ID de requête via un middleware
Attribuer un ID commun à tous les logs facilite le suivi d’une requête donnée.
Tous les logs incluent désormais
request-id.
Journaliser les avertissements de dépréciation
Journalisez les avertissements liés à l’usage de fonctionnalités dépréciées de PHP ou Laravel..env.
Laravel Pail — Suivi en temps réel
Laravel Pail est un outil de développement qui affiche les logs de l’application en temps réel dans le terminal.Pail nécessite l’extension PHP PCNTL.
Installation
Utilisation
Filtrage
Récapitulatif
Comment choisir un niveau de log
Comment choisir un niveau de log
Guide de choix des channels
Guide de choix des channels
- Développement : écrire en fichier via
singleoudaily - Production : combiner
daily(persistance fichier) etslack(alertes) viastack - Traitement spécifique :
Log::build()pour un fichier dédié - Suivi temps réel :
php artisan paildans le terminal
Précautions en production
Précautions en production
- Les logs
debugpeuvent contenir des informations sensibles. En production,LOG_LEVEL=errorou plus est recommandé. - Faites tourner régulièrement les fichiers de logs pour ne pas saturer le disque (option
daysdu channeldaily). - Attention aux limites de taux des services externes comme Slack. Ne remontez que les erreurs critiques.
emergencyalertcriticalerrorwarningnoticeinfodebug