A straightforward logging library for PHP that implements PSR-3, making it easy to integrate logging into your project.

michelphp 33ab9688cd Initial release of psr3-logger 1 deň pred
src 33ab9688cd Initial release of psr3-logger 1 deň pred
tests 33ab9688cd Initial release of psr3-logger 1 deň pred
.gitignore 33ab9688cd Initial release of psr3-logger 1 deň pred
README.md 33ab9688cd Initial release of psr3-logger 1 deň pred
composer.json 33ab9688cd Initial release of psr3-logger 1 deň pred

README.md

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:

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

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).

use Michel\Log\Handler\StreamHandler;

$handler = new StreamHandler('php://stderr', LogLevel::ERROR);

RotatingFileHandler

Creates a new log file every day.

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.

use Michel\Log\Handler\SyslogHandler;

$handler = new SyslogHandler('my-app');

GroupHandler

Combine multiple handlers.

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%.

$handler = new StreamHandler('php://stdout');
$handler->setFormat('[%level%] %message%');

Log Level Filtering

You can set a minimum log level for any handler.

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:

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

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).

use Michel\Log\Handler\StreamHandler;

$handler = new StreamHandler('php://stderr', LogLevel::ERROR);

RotatingFileHandler

Crée un nouveau fichier de log chaque jour.

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.

use Michel\Log\Handler\SyslogHandler;

$handler = new SyslogHandler('mon-app');

GroupHandler

Combiner plusieurs gestionnaires.

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%.

$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.

use Psr\Log\LogLevel;

// Ne journaliser que les ERREURS et supérieur
$handler = new StreamHandler('php://stderr');
$handler->setLevel(LogLevel::ERROR);