Skip to main content

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 dans config/logging.php. La variable LOG_CHANNEL change le channel par défaut.

Drivers de channel disponibles

Niveaux de log

Laravel supporte les 8 niveaux de RFC 5424, du plus grave au moins grave. L’option 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çade Illuminate\Support\Facades\Log pour écrire chaque niveau.
Exemple dans un contrôleur :

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.
Ici, tous les logs debug et supérieurs vont dans daily (fichier), mais seuls les critical et supérieurs partent vers slack.
En production, réglez le niveau du channel slack à error ou critical. Diffuser trop de logs sur Slack noie les alertes importantes.

Channel daily — rotation

daily crée un fichier par jour et supprime automatiquement les anciens.
Une valeur days trop basse supprime rapidement les anciens fichiers. Prévoyez une durée suffisante pour l’analyse post-incident.

Notifications d’erreur Slack

Récupérez une URL de Incoming Webhook Slack et placez-la dans .env.
Incluez 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.
1

Créer le middleware

2

Implémenter `handle()`

3

Enregistrer le middleware

Enregistrez-le comme middleware global dans bootstrap/app.php.
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.
Spécifiez le channel dans .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

  • Développement : écrire en fichier via single ou daily
  • Production : combiner daily (persistance fichier) et slack (alertes) via stack
  • Traitement spécifique : Log::build() pour un fichier dédié
  • Suivi temps réel : php artisan pail dans le terminal
  • Les logs debug peuvent contenir des informations sensibles. En production, LOG_LEVEL=error ou plus est recommandé.
  • Faites tourner régulièrement les fichiers de logs pour ne pas saturer le disque (option days du channel daily).
  • Attention aux limites de taux des services externes comme Slack. Ne remontez que les erreurs critiques.
Dernière modification le 13 juillet 2026