sbwerewolf/subprocess-logger
Composer 安装命令:
composer require sbwerewolf/subprocess-logger
包简介
Library for logging of subprocess events
README 文档
README
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
sbwerewolf/subprocess-logger 适用场景与选型建议
sbwerewolf/subprocess-logger 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 3 次下载、GitHub Stars 达 0, 最近一次更新时间为 2021 年 12 月 15 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 sbwerewolf/subprocess-logger 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 sbwerewolf/subprocess-logger 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 3
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: Apache-2.0
- 更新时间: 2021-12-15