aarvaos / reporting
A very light & easy logger of elements at user-defined levels
Requires
- php: ^8.1
Requires (Dev)
- ext-mbstring: *
- friendsofphp/php-cs-fixer: ^3.95
- phpstan/phpstan: ^2.2
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- phpunit/phpunit: ^10.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
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.