PHPackages                             phpsoftbox/logger - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Logging &amp; Monitoring](/categories/logging)
4. /
5. phpsoftbox/logger

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

phpsoftbox/logger
=================

Logger component for the PhpSoftBox HTTP framework

053↓92.9%PHP

Since Mar 5Pushed 4mo agoCompare

[ Source](https://github.com/phpsoftbox/logger)[ Packagist](https://packagist.org/packages/phpsoftbox/logger)[ RSS](/packages/phpsoftbox-logger/feed)WikiDiscussions master Synced 2d ago

READMEChangelogDependenciesVersions (1)Used By (0)

PhpSoftBox Logger
=================

[](#phpsoftbox-logger)

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

[](#http-middleware)

```
use PhpSoftBox\Logger\LoggerMiddleware;

$middleware = new LoggerMiddleware($logger);
```

Интеграция с DI (пример PHP-DI)
-------------------------------

[](#интеграция-с-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
-------------

[](#bufferhandler)

- `buffer_size`: 0 = без лимита.
- `flush_on_overflow`: true — сбрасывает при переполнении, false — удаляет старейшую запись.
- Методы `flush()`, `drain()`, `clear()` позволяют контролировать буфер вручную.

LineFormatter
-------------

[](#lineformatter)

По умолчанию `LineFormatter` выводит stack trace в несколько строк (удобно для чтения). Это поведение можно отключить:

```
use PhpSoftBox\Logger\Formatter\LineFormatter;

$formatter = new LineFormatter(stacktraceMultiline: false);
```

Через конфиг `LoggerFactory`:

```
[
    'type' => 'line',
    'stacktrace_multiline' => false,
]
```

Использование LogRecord::withChannel/withDatetime
-------------------------------------------------

[](#использование-logrecordwithchannelwithdatetime)

Процессоры и обработчики должны возвращать новые экземпляры `LogRecord` при изменении канала или времени записи. Методы `withChannel()` и `withDatetime()` гарантируют неизменяемость и корректную передачу данных по цепочке.

Тесты
-----

[](#тесты)

```
composer install
./vendor/bin/phpunit
```

Лицензия
--------

[](#лицензия)

MIT

###  Health Score

20

—

LowBetter than 13% of packages

Maintenance52

Moderate activity, may be stable

Popularity9

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity12

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/0279d150240c97d210034878b0467462246dc14d29b5618157ff6a8be49a50e3?d=identicon)[inspector-who](/maintainers/inspector-who)

---

Top Contributors

[![inspector-who](https://avatars.githubusercontent.com/u/6973963?v=4)](https://github.com/inspector-who "inspector-who (1 commits)")

### Embed Badge

![Health badge](/badges/phpsoftbox-logger/health.svg)

```
[![Health](https://phpackages.com/badges/phpsoftbox-logger/health.svg)](https://phpackages.com/packages/phpsoftbox-logger)
```

###  Alternatives

[psr/log

Common interface for logging libraries

10.4k1.2B11.5k](/packages/psr-log)[open-telemetry/api

API for OpenTelemetry PHP.

1941.5M275](/packages/open-telemetry-api)[open-telemetry/sdk

SDK for OpenTelemetry PHP.

2328.5M342](/packages/open-telemetry-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
