phpsoftbox/logger
Composer 安装命令:
composer require phpsoftbox/logger
包简介
Logger component for the PhpSoftBox HTTP framework
README 文档
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()позволяют контролировать буфер вручную.
LineFormatter
По умолчанию LineFormatter выводит stack trace в несколько строк (удобно для чтения).
Это поведение можно отключить:
use PhpSoftBox\Logger\Formatter\LineFormatter; $formatter = new LineFormatter(stacktraceMultiline: false);
Через конфиг LoggerFactory:
[
'type' => 'line',
'stacktrace_multiline' => false,
]
Использование LogRecord::withChannel/withDatetime
Процессоры и обработчики должны возвращать новые экземпляры LogRecord при изменении канала или времени записи. Методы withChannel() и withDatetime() гарантируют неизменяемость и корректную передачу данных по цепочке.
Тесты
composer install ./vendor/bin/phpunit
Лицензия
MIT
统计信息
- 总下载量: 52
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-02-06