Monolog pour PHP : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce que Monolog et pourquoi en a-t-on besoin ?

\n\n

Monolog est une bibliothèque standard de journalisation en PHP. Elle fournit une boîte à outils flexible et puissante pour enregistrer des logs dans différents canaux (fichiers, bases de données, e-mail, journal système, services externes, etc.). Monolog est le standard de facto pour les applications PHP, en particulier dans l'écosystème Symfony, Laravel et d'autres frameworks modernes.

\n\n

Pourquoi cette bibliothèque est-elle nécessaire ? Dans toute application, il est essentiel de suivre les événements : erreurs, avertissements, messages d'information, informations de débogage. Monolog permet de :

\n
    \n
  • Centraliser la journalisation — écrire des logs dans un format unique et depuis n'importe quel endroit de l'application.
  • \n
  • Configurer les canaux de manière flexible — envoyer les erreurs critiques vers Telegram/Slack, et les messages d'information vers un fichier.
  • \n
  • Formater les messages — ajouter la date, le niveau, le contexte, la pile d'appels.
  • \n
  • Filtrer les logs — traiter uniquement les messages d'un certain niveau.
  • \n
  • S'intégrer aux frameworks — dans Symfony, Laravel, Yii2, c'est Monolog qui est utilisé.
  • \n
\n\n

Installation

\n

Monolog s'installe via Composer — le gestionnaire de paquets standard pour PHP.

\n
composer require monolog/monolog
\n

Si vous utilisez PHP 8.0+, il est recommandé d'installer la dernière version stable. Après l'installation, le dossier vendor et le fichier composer.json avec la dépendance apparaîtront dans le projet.

\n\n

Démarrage rapide

\n

L'exemple le plus simple — écrire un log dans un fichier :

\n
<?php\nrequire 'vendor/autoload.php';\n\nuse Monolog\\Logger;\nuse Monolog\\Handler\\StreamHandler;\n\n// Création d'un logger avec le nom de canal 'my_app'\n$log = new Logger('my_app');\n// Ajout d'un gestionnaire — écriture dans un fichier\n$log->pushHandler(new StreamHandler('app.log', Logger::WARNING));\n\n// Maintenant, on peut journaliser\n$log->warning('Ceci est un avertissement');\n$log->error('Ceci est une erreur');\n\necho "Les logs ont été écrits dans app.log";\n?>
\n

Après exécution du script, le fichier app.log contiendra quelque chose comme :

\n
[2025-04-09T10:30:00.123456+00:00] my_app.WARNING: Ceci est un avertissement [] []\n[2025-04-09T10:30:00.123789+00:00] my_app.ERROR: Ceci est une erreur [] []
\n\n

Méthodes et fonctions principales

\n

Examinons les méthodes clés de Monolog. Elles font toutes partie de la classe Monolog\\Logger ou de classes associées.

\n\n

1. pushHandler(HandlerInterface $handler)

\n

Ce qu'elle fait : Ajoute un gestionnaire (handler) à la pile. Le logger peut avoir plusieurs gestionnaires, et chacun d'eux recevra tous les messages (si aucun filtrage n'est configuré).

\n

Paramètres :

\n
    \n
  • $handler — un objet implémentant Monolog\\Handler\\HandlerInterface (par exemple, StreamHandler, FirePHPHandler, SlackHandler).
  • \n
\n

Exemple :

\n
$log = new Logger('app');\n$log->pushHandler(new StreamHandler('debug.log', Logger::DEBUG));\n$log->pushHandler(new StreamHandler('errors.log', Logger::ERROR));\n// Désormais, les messages de niveau ERROR et supérieur iront dans les deux fichiers
\n\n

2. addRecord(int $level, string $message, array $context = [])

\n

Ce qu'elle fait : Méthode de base pour écrire un log. Elle n'est généralement pas appelée directement ; on utilise plutôt des méthodes d'encapsulation (debug(), info(), etc.).

\n

Paramètres :

\n
    \n
  • $level — le niveau de journalisation (constantes : Logger::DEBUG, Logger::INFO, Logger::WARNING, etc.).
  • \n
  • $message — le texte du message.
  • \n
  • $context — un tableau de données supplémentaires (par exemple, ID utilisateur, adresse IP).
  • \n
\n

Exemple :

Recommendations