PHPackages                             sbwerewolf/subprocess-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. sbwerewolf/subprocess-logger

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

sbwerewolf/subprocess-logger
============================

Library for logging of subprocess events

1.0.2(4y ago)03Apache-2.0PHP

Since Dec 19Pushed 4y ago1 watchersCompare

[ Source](https://github.com/SbWereWolf/subprocess-logger)[ Packagist](https://packagist.org/packages/sbwerewolf/subprocess-logger)[ RSS](/packages/sbwerewolf-subprocess-logger/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (2)Versions (4)Used By (0)

How To Install
==============

[](#how-to-install)

`composer require sbwerewolf/subprocess-logger`

Пакетный логгер для микро операций
==================================

[](#пакетный-логгер-для-микро-операций)

При разработке для себя, при обкатке каких то идей, в логи смотрят, только при сбоях.

В таких ситуациях, хочется видеть подробные логи только если ошибка произошла, если ошибки не было, то и забивать логи сообщениями не хочется. Но когда пишешь в логи, ты ещё не знаешь, будет сбой или нет, поэтому писать приходиться всё подряд.

Но мы ведь можем сохранять не всё и не всегда. Мы можем сохранять логи только при ошибках, только при сбоях.

Именно для такого использования был разработан `SbWereWolf\BatchLogger\Archivist`.

Работать с ним очень просто.

Делаем запись о начале работы `Archivist::start()`.

Если произошел сбой, то сохраняем подробный журнала сообщений, `Archivist::writeDetails()`.

Если сбой не произошёл, то делаем короткую запись об успехе выполнения `Archivist::writeBrief()`.

Пример использования
====================

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

```
use Integration\FileLogger;
use SbWereWolf\BatchLogger\ArchivistFactory;

$filePath = date('Ymd') . '.log';
$file = fopen($filePath, 'a');
$logger = new FileLogger($file);

$toLevel = [
        'debug' => 7,
        'info' => 6,
        'notice' => 5,
        'warning' => 4,
        'error' => 3,
        'critical' => 2,
        'alert' => 1,
        'emergency' => 0,
    ];

$archivist = (new ArchivistFactory())
    ->setParent('Global process')
    ->setChild('Example of Archivist using')
    ->setConverting($toLevel)
    ->setLevel('debug')
    ->make($logger);
try {
    $archivist->start('notice', 'start process');
    /* Add to journal some algorithm notes */
    $archivist->debug('some debug info');
    /* If process finish with no errors - write brief to logs */
    $archivist->writeBrief(
        'notice',
        'process finish with success'
    );
} catch (Throwable $e) {
    $message = "message: {$e->getMessage()}," .
        " trace:{$e->getTraceAsString()}";
    $archivist->critical($message);

    /* If some exception will occur - write detail logs */
    $archivist->writeDetails(
        'notice',
        'process finish with failure'
    );
}
fclose($file);
```

Если код отработает без сбоев, то в логах будет два сообщения:

- start process
- process finish with success

Если при работе кода произойдёт сбой, то в логи будут записаны все сообщения:

- start process
- some debug info
- message: `exception`, trace: `exception code trace`
- process finish with failure

Для более наглядной демонстрации работы написаны тесты, просто запустите, и сразу увидите в каких случаях, сколько записей попадает в логи.

Уровни логирования и другие опции
=================================

[](#уровни-логирования-и-другие-опции)

Уровни логирования задаются по выбору пользователя, каждому названию уровня (строковое значение) должен быть сопоставлен его уровень (целочисленное значение).

Уровни логирования устанавливаются с помощью массива методом `ArchivistFactory::setConverting(array(string=>int))`.

С помощью метода `ArchivistFactory::setLevel(string)` можно ограничить уровень сообщений которые попадут в логи. Если уровень сообщения выше заданного, то такое сообщение будет отброшено и не будет записано в логи.

Родительский идентификатор процесса устанавливается методом `ArchivistFactory::setParent(string)`

Дочерний идентификатор процесса устанавливается методом `ArchivistFactory::setChild(string)`

Родительский и дочерний идентификаторы можно использовать, что бы строить дерево выполнения процесса в целом.

Либо можно использовать родительский идентификатор как сквозной, а дочерние идентификаторы для отдельных шагов алгоритма.

Для непосредственной записи в логи, необходимо передать экземпляр поддерживающий интерфейс `LoggerInterface` в метод `ArchivistFactory::make()` (создания экземпляра `Archivist`).

Особенности
===========

[](#особенности)

Поскольку логи сохраняются в оперативную память, использовать `Archivist` следует только для коротких процессов, для которых обязательно будут вызваны методы `Archivist::writeBrief()` или `Archivist::writeDetails()`.

Если эти методы не будут вызваны, то вся доступная оперативная память будет забита логами. Очистка списка сообщений происходит только при вызове этих двух методов.

Контакты
========

[](#контакты)

```
Вольхин Николай
e-mail ulfnew@gmail.com
phone +7-902-272-65-35
Telegram @sbwerewolf

```

[Telegram chat with me](https://t.me/SbWereWolf)

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 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.

###  Release Activity

Cadence

Every ~1 days

Total

3

Last Release

1609d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/56415ea6aeceece7248ce372ec911905cab2cd1313ed2bb4ec8cfacdbaa7d08f?d=identicon)[SbWereWolf](/maintainers/SbWereWolf)

---

Top Contributors

[![SbWereWolf](https://avatars.githubusercontent.com/u/16444541?v=4)](https://github.com/SbWereWolf "SbWereWolf (15 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

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

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

###  Alternatives

[sentry/sentry

PHP SDK for Sentry (http://sentry.io)

1.9k227.1M273](/packages/sentry-sentry)[rollbar/rollbar

Monitors errors and exceptions and reports them to Rollbar

33723.7M82](/packages/rollbar-rollbar)[illuminate/log

The Illuminate Log package.

6224.3M518](/packages/illuminate-log)[open-telemetry/sdk

SDK for OpenTelemetry PHP.

2222.9M248](/packages/open-telemetry-sdk)[open-telemetry/api

API for OpenTelemetry PHP.

1833.0M214](/packages/open-telemetry-api)[pagemachine/typo3-formlog

Form log for TYPO3

23225.3k6](/packages/pagemachine-typo3-formlog)

PHPackages © 2026

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