# PHP Logger PSR-3 A straightforward logging library for PHP that implements PSR-3, making it easy to integrate logging into your project. ## Installation Install via [Composer](https://getcomposer.org/): ```bash composer require michel/psr3-logger ``` ## Requirements - PHP 7.4 or higher ## Features - **PSR-3 Compliant**: Works with any PSR-3 compatible interface. - **Multiple Handlers**: - `StreamHandler`: Log to streams (stdout, stderr). - `FileHandler`: Log to a specific file. - `RotatingFileHandler`: Log to files rotated by date. - `SyslogHandler`: Log to system syslog. - `MemoryHandler`: Log to an array (useful for testing). - `GroupHandler`: Send logs to multiple handlers at once. - **Log Level Filtering**: Set minimum log levels for each handler. - **Custom Formatting**: Easily customize log message format. --- ## Usage ### Basic Usage ```php use Michel\Log\Logger; use Michel\Log\Handler\StreamHandler; use Psr\Log\LogLevel; // Log to stdout $handler = new StreamHandler('php://stdout'); $logger = new Logger($handler); $logger->info('Hello World'); ``` ### Handlers #### StreamHandler Useful for containerized environments (Docker, Kubernetes). ```php use Michel\Log\Handler\StreamHandler; $handler = new StreamHandler('php://stderr', LogLevel::ERROR); ``` #### RotatingFileHandler Creates a new log file every day. ```php use Michel\Log\Handler\RotatingFileHandler; // Creates logs like /var/log/app-2023-11-24.log $handler = new RotatingFileHandler('/var/log/app.log'); ``` #### SyslogHandler Logs to the operating system's syslog. ```php use Michel\Log\Handler\SyslogHandler; $handler = new SyslogHandler('my-app'); ``` #### GroupHandler Combine multiple handlers. ```php use Michel\Log\Handler\GroupHandler; use Michel\Log\Handler\StreamHandler; use Michel\Log\Handler\RotatingFileHandler; $handler = new GroupHandler([ new StreamHandler('php://stdout'), new RotatingFileHandler('/var/log/app.log') ]); ``` ### Custom Formatting You can customize the log format for any handler. The default format is `%timestamp% [%level%]: %message%`. ```php $handler = new StreamHandler('php://stdout'); $handler->setFormat('[%level%] %message%'); ``` ### Log Level Filtering You can set a minimum log level for any handler. ```php use Psr\Log\LogLevel; // Only log ERROR and above $handler = new StreamHandler('php://stderr'); $handler->setLevel(LogLevel::ERROR); ``` --- # Documentation en Français Une bibliothèque de journalisation simple pour PHP qui implémente PSR-3, facilitant l'intégration des logs dans votre projet. ## Installation Installer via [Composer](https://getcomposer.org/): ```bash composer require michel/psr3-logger ``` ## Prérequis - PHP 7.4 ou supérieur ## Fonctionnalités - **Compatible PSR-3**: Fonctionne avec n'importe quelle interface compatible PSR-3. - **Plusieurs Gestionnaires (Handlers)**: - `StreamHandler`: Journaliser vers des flux (stdout, stderr). - `FileHandler`: Journaliser vers un fichier spécifique. - `RotatingFileHandler`: Journaliser vers des fichiers rotatifs par date. - `SyslogHandler`: Journaliser vers le syslog du système. - `MemoryHandler`: Journaliser vers un tableau (utile pour les tests). - `GroupHandler`: Envoyer des logs à plusieurs gestionnaires à la fois. - **Filtrage par Niveau de Log**: Définir des niveaux de log minimum pour chaque gestionnaire. - **Formatage Personnalisé**: Personnaliser facilement le format des messages de log. --- ## Utilisation ### Utilisation de base ```php use Michel\Log\Logger; use Michel\Log\Handler\StreamHandler; use Psr\Log\LogLevel; // Journaliser vers stdout $handler = new StreamHandler('php://stdout'); $logger = new Logger($handler); $logger->info('Bonjour le monde'); ``` ### Gestionnaires (Handlers) #### StreamHandler Utile pour les environnements conteneurisés (Docker, Kubernetes). ```php use Michel\Log\Handler\StreamHandler; $handler = new StreamHandler('php://stderr', LogLevel::ERROR); ``` #### RotatingFileHandler Crée un nouveau fichier de log chaque jour. ```php use Michel\Log\Handler\RotatingFileHandler; // Crée des logs comme /var/log/app-2023-11-24.log $handler = new RotatingFileHandler('/var/log/app.log'); ``` #### SyslogHandler Journalise vers le syslog du système d'exploitation. ```php use Michel\Log\Handler\SyslogHandler; $handler = new SyslogHandler('mon-app'); ``` #### GroupHandler Combiner plusieurs gestionnaires. ```php use Michel\Log\Handler\GroupHandler; use Michel\Log\Handler\StreamHandler; use Michel\Log\Handler\RotatingFileHandler; $handler = new GroupHandler([ new StreamHandler('php://stdout'), new RotatingFileHandler('/var/log/app.log') ]); ``` ### Formatage Personnalisé Vous pouvez personnaliser le format de log pour n'importe quel gestionnaire. Le format par défaut est `%timestamp% [%level%]: %message%`. ```php $handler = new StreamHandler('php://stdout'); $handler->setFormat('[%level%] %message%'); ``` ### Filtrage par Niveau de Log Vous pouvez définir un niveau de log minimum pour n'importe quel gestionnaire. ```php use Psr\Log\LogLevel; // Ne journaliser que les ERREURS et supérieur $handler = new StreamHandler('php://stderr'); $handler->setLevel(LogLevel::ERROR); ```