Qu'est-ce que la journalisation en PHP et pourquoi en a-t-on besoin ?
La journalisation est le processus d'enregistrement d'informations sur le fonctionnement d'une application : erreurs, avertissements, messages de débogage et actions des utilisateurs. En PHP, contrairement à Python, il n'existe pas de logger compatible PSR intégré "prêt à l'emploi" (bien qu'il existe la fonction error_log()). Par conséquent, la meilleure solution est d'utiliser la bibliothèque Monolog — le standard de facto pour la journalisation dans les projets PHP.
Pourquoi journaliser ?
- Débogage en production (stack trace des erreurs)
- Surveillance des performances
- Audit de sécurité (connexions, modifications de données)
- Analyse du comportement des utilisateurs
Installation de Monolog
L'installation se fait via Composer (l'équivalent de pip pour PHP) :
composer require monolog/monologPour fonctionner, PHP 8.0+ et Composer 2.x sont requis.
Fonctionnalités et possibilités principales
Monolog prend en charge :
- Canaux (Channels) — des loggers isolés pour différentes parties de l'application (par exemple, 'security', 'database')
- Niveaux de journalisation (DEBUG, INFO, WARNING, ERROR, CRITICAL, etc.)
- Handlers — où écrire : fichiers, bases de données, Slack, Telegram, email
- Processeurs (Processors) — enrichissement des messages avec du contexte (IP, heure, session)
Exemple de code
<?phprequire 'vendor/autoload.php';
use Monolog\\Logger;use Monolog\\Handler\\StreamHandler;use Monolog\\Handler\\TelegramBotHandler;use Monolog\\Processor\\WebProcessor;
// Création du canal 'app'$log = new Logger('app');
// Handler pour l'écriture dans un fichier$log->pushHandler(new StreamHandler(__DIR__.'/logs/app.log', Logger::WARNING));
// Handler pour Telegram (optionnel)$telegram = new TelegramBotHandler('YOUR_BOT_TOKEN', 'CHAT_ID', Logger::CRITICAL);$log->pushHandler($telegram);
// Processeur pour ajouter l'IP et le User-Agent$log->pushProcessor(new WebProcessor());
// Journalisation$log->info('Utilisateur connecté', ['user_id' => 123]);$log->error('Erreur de base de données', ['sql' => 'SELECT * FROM users']);Quand l'utiliser
Monolog est obligatoire dans les cas suivants :
- Tout projet PHP commercial ou open-source (Symfony, Laravel utilisent Monolog par défaut)
- Microservices et API — pour le traçage des requêtes
- Scripts cron et workers — pour le suivi de l'exécution des tâches
- Lors de l'intégration avec des services externes (logs dans Graylog, Sentry, Papertrail)
La bibliothèque a été testée dans des milliers de projets et prend en charge pratiquement n'importe quel transport pour les logs. Si vous développez en PHP — commencez par Monolog.
Aussi dans la bibliothèque
Envoi de SMS en C++ : API bibliothèque LibCurl et requêtes REST
Travail avec les images en Rust : aperçu des bibliothèques image, fast_image_resize et autres