Skip to main content

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 dans config/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çade Illuminate\Support\Facades\Log pour écrire un message à chaque niveau.
Exemple dans un contrôleur.

La fonction helper log()

Le helper log() é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

Utilisez withContext() 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 canal stack écrit à chaque appel dans plusieurs canaux en une seule opération.
Avec cette configuration, tous les logs de niveau debug ou supérieur sont écrits dans daily (fichier), et seuls les critical et plus sont également envoyés sur Slack.
En production, il est conseillé de fixer le niveau du canal slack à error ou critical. Faire remonter des logs mineurs sur Slack noie les alertes réellement importantes dans un flux de notifications.

Canal daily — rotation des logs

Le canal daily sépare les fichiers par date et supprime automatiquement les anciens.
Une valeur days trop basse supprimera trop vite les anciens logs. Prévoyez une durée de rétention suffisante pour investiguer les incidents en production.

Notifier les erreurs sur Slack

Récupérez une URL d’Incoming Webhook Slack et déclarez-la dans .env.
Il suffit d’inclure 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.
Après cette configuration, l’entrée 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.
Précisez le canal dans .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

  • Développement : single ou daily pour écrire dans un fichier.
  • Production : stack combinant daily (persistance) et slack (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 pail depuis le terminal.
  • Les logs debug peuvent contenir des informations sensibles. En production, préférez LOG_LEVEL=error ou plus élevé.
  • Faites tourner régulièrement les fichiers pour éviter la saturation disque (paramètre days du canal daily).
  • Attention aux limites de débit des services externes comme Slack. Ne notifiez que les erreurs graves en configurant le niveau adéquat.
Dernière modification le 2 août 2026