Search by

aarvaos / reporting

aarvaos

A very light & easy logger of elements at user-defined levels

Package info

github.com/aarvaos/reporting

pkg:composer/aarvaos/reporting

Statistics

Installs: 4

Dependents: 0

Suggesters: 0

Stars: 2

Open Issues: 0

v1.1.0 2026-08-14 00:10 UTC

This package is auto-updated.

Last update: 2026-09-25 11:28:49 UTC


README

Packagist CI PHP Version min PHP Version latest PHPStan level 10 License

A very light, handy and easy-to-use library to log and track all kind of elements you want to report.

Concept

Whenever you need to keep track of anything happening in your code so you can audit at a later stage, you may use a Aarvaos\Reporting\Report object!

Install

Use Composer composer require aarvaos/reporting and you're done!

Use

Simple use case demo:

const NEUTRAL = 0;
const SERIOUS = 10;
const CRITICAL = 25;

$report = new \Aarvaos\Reporting\Report();

$report->log(1, "Something light happened.");
$report->log(SERIOUS, "Something serious happened!");
$report->log(-4, "Something negligible happened...");

$report->getSeverity(); // 10
$report->hasSeverityReached(9); // true
$report->hasSeverityReached(CRITICAL); // false

Of course you can also retrieve the recorded elements:

$report->getLogs(); // [Log<1, ...>, Log<10, ...>, Log<-4, ...>]

foreach($report->iterateLogs() as $log) {

    // $log = Log<1, ...>,
    // $log = Log<10, ...>,
    // $log = Log<-4, ...>.

}

... And even filter and sort:

$report->getLogs(-4); // [Log<-4, ...>]

foreach($report->iterateLogs(\Aarvaos\Reporting\Report::SORT_SEVERITY_ASC, below: 5) as $log) {

    // $log = Log<-4, ...>,
    // $log = Log<1, ...>.

}

Hooks

Also you may hook log reporting for special treatments ; simply use the special Report class \Aarvaos\Reporting\HookableReport and use the method ::registerHook() passing the appropriate hook for your needs. You have various hooks classes allowing to handle multiple log reporting contexts within \Aarvaos\Reporting\Hooks\….

e.g. throwing exception on reaching certain severity level :

$report = new \Aarvaos\Reporting\HookableReport();

$report->registerHook(new \Aarvaos\Reporting\Hooks\ReportSeverityReachHook(10, after: static function(\Aarvaos\Reporting\Events\AfterReportingLogEvent $event): never {
    throw new \RuntimeException($event->log->getPayload());
}));

$report(10, 'Error!'); // Exception

On top the existing hooks, you can implement your own ones by implementing the interface \Aarvaos\Reporting\Hooks\ReportingHookInterface and defining the context to hook in the ::shouldHook() method.