phpsoftbox / logger
Logger component for the PhpSoftBox HTTP framework
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/phpsoftbox/logger
Requires
- php: ^8.4
- psr/http-message: ^2.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
- psr/log: ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.93
- phpsoftbox/cli-app: dev-master
- phpsoftbox/cs-fixer: ^1.0.1
- phpsoftbox/http-message: dev-master
- phpunit/phpunit: ^11.2
This package is auto-updated.
Last update: 2026-02-06 10:49:02 UTC
README
PSR-3 совместимый логгер с модульной архитектурой для проектов PhpSoftBox. Поддерживает настраиваемые обработчики, форматтеры и процессоры, строгую типизацию и единый конфигуратор.
Возможности
- Реализация
Psr\Log\LoggerInterface. - Обработчики: Stream, Buffer, Console, RotatingFile, Syslog, InMemory (тестовый), Null.
- Форматтеры: Line, JSON.
- Процессоры: глобальные и локальные, встроен
RedactSecretsProcessor. - Конфигуратор
LoggerFactoryсоздаёт каналы из PHP-конфигураций.
Установка
composer require phpsoftbox/logger
Быстрый пример
use PhpSoftBox\Logger\Logger; use PhpSoftBox\Logger\Handler\StreamHandler; use PhpSoftBox\Logger\Processor\RedactSecretsProcessor; $logger = new Logger( name: 'api', handlers: [new StreamHandler(__DIR__.'/var/log/api.log')], processors: [new RedactSecretsProcessor()], ); $logger->info('User {user} logged in', ['user' => 'Alice', 'password' => 'secret']);
Конфигуратор
use PhpSoftBox\Logger\Configurator\LoggerFactory; use PhpSoftBox\Logger\Handler\StreamHandler; use PhpSoftBox\Logger\Handler\NullHandler; $factory = new LoggerFactory([ 'channels' => [ 'default' => [ 'name' => 'app', 'processors' => [\PhpSoftBox\Logger\Processor\RedactSecretsProcessor::class], 'handlers' => [ new StreamHandler(__DIR__ . '/var/log/app.log'), new NullHandler(), [ 'type' => 'buffer', 'buffer_size' => 100, 'handler' => new StreamHandler(__DIR__ . '/var/log/buffered.log'), ], ], ], ], ]); $logger = $factory->create('default');
HTTP middleware
use PhpSoftBox\Logger\LoggerMiddleware; $middleware = new LoggerMiddleware($logger);
Интеграция с DI (пример PHP-DI)
use DI\ContainerBuilder; use PhpSoftBox\Logger\Configurator\LoggerFactory; use PhpSoftBox\Logger\Configurator\LoggerFactoryInterface; use PhpSoftBox\Logger\Handler\StreamHandler; use PhpSoftBox\Logger\Logger; $builder = new ContainerBuilder(); $builder->addDefinitions([ LoggerFactoryInterface::class => static function (): LoggerFactoryInterface { return new LoggerFactory([ 'channels' => [ 'default' => [ 'handlers' => [new StreamHandler(__DIR__.'/var/log/app.log')], ], ], ]); }, Logger::class => static function (LoggerFactoryInterface $factory): Logger { return $factory->create('default'); }, 'logger.audit' => static function (Logger $logger): Logger { return $logger->withChannel('audit'); }, ]); $container = $builder->build(); $appLogger = $container->get(Logger::class); $auditLogger = $container->get('logger.audit');
BufferHandler
buffer_size: 0 = без лимита.flush_on_overflow: true — сбрасывает при переполнении, false — удаляет старейшую запись.- Методы
flush(),drain(),clear()позволяют контролировать буфер вручную.
Использование LogRecord::withChannel/withDatetime
Процессоры и обработчики должны возвращать новые экземпляры LogRecord при изменении канала или времени записи. Методы withChannel() и withDatetime() гарантируют неизменяемость и корректную передачу данных по цепочке.
Тесты
composer install ./vendor/bin/phpunit
Лицензия
MIT