Download the PHP package sbwerewolf/subprocess-logger without Composer
On this page you can find all versions of the php package sbwerewolf/subprocess-logger. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download sbwerewolf/subprocess-logger
More information about sbwerewolf/subprocess-logger
Files in sbwerewolf/subprocess-logger
Package subprocess-logger
Short Description Library for logging of subprocess events
License Apache-2.0
Informations about the package subprocess-logger
How To Install
composer require sbwerewolf/subprocess-logger
Пакетный логгер для микро операций
При разработке для себя, при обкатке каких то идей, в логи смотрят, только при сбоях.
В таких ситуациях, хочется видеть подробные логи только если ошибка произошла, если ошибки не было, то и забивать логи сообщениями не хочется. Но когда пишешь в логи, ты ещё не знаешь, будет сбой или нет, поэтому писать приходиться всё подряд.
Но мы ведь можем сохранять не всё и не всегда. Мы можем сохранять логи только при ошибках, только при сбоях.
Именно для такого использования был разработан
SbWereWolf\BatchLogger\Archivist
.
Работать с ним очень просто.
Делаем запись о начале работы Archivist::start()
.
Если произошел сбой, то сохраняем подробный журнала сообщений,
Archivist::writeDetails()
.
Если сбой не произошёл, то делаем короткую запись об успехе выполнения
Archivist::writeBrief()
.
Пример использования
Если код отработает без сбоев, то в логах будет два сообщения:
- 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()
.
Если эти методы не будут вызваны, то вся доступная оперативная память будет забита логами. Очистка списка сообщений происходит только при вызове этих двух методов.