keboola/api-error-control

API Error control library - Utility classes for implementing logging in a KBC API

4.2.0 2024-03-15 12:48 UTC

README

Build Status Maintainability Test Coverage

The library provides utility classes for catching, formatting and logging errors for KBC API backend. The provided classes are:

  • UserException - The API code should throw this exception in case the exception should be forwarded to the end user.
  • ApplicationException - The API code should throw this exception in case the exception should be concealed.
  • ExceptionListener - Symfony Kernel exception listener which ensures the above described behavior, to use it put the following in services.yaml:
services:
    Keboola\ErrorControl\EventListener\ExceptionListener:
        tags:
            - { name: kernel.event_listener, event: kernel.exception }
    
  • LogProcessor - Log processor which adds useful fields into every log message and optionally uploads full exception traces to S3. To configure, add the following to services.yaml:
services:
    Keboola\ErrorControl\Monolog\LogProcessor:
        public: true
        arguments:
            $appName: "%app_name%"
        tags:
            - { name: monolog.processor, method: processRecord }

Note: You need to have symfony/monolog-bundle installed for the tag monolog.processor to work.

  • LogInfo - A record class used to pass additional information to the log processor. Use it in application code as:
/** @var LogProcessor $logProcessor */
$logProcessor = $this->container->get('Keboola\\ErrorControl\\Monolog\\LogProcessor');
$logProcessor->setLogInfo(new LogInfo(...));

Development

Use docker-compose run dev composer ci to run tests locally.

Migration From 3.x to 4.x

Remove:

services:
    Keboola\ErrorControl\Uploader\UploaderFactory:
        arguments:
            $storageApiUrl: "%storage_api_url%"
            $s3Bucket: "%logs_s3_bucket%"
            $s3Region: "%logs_s3_bucket_region%"
        

Also note that 4.x uses Monolog 3.x and php >= 8.1, so you will also need to support these versions

License

MIT licensed, see LICENSE file.