Skip to content

Library for formatting and logging error messages

License

Notifications You must be signed in to change notification settings

keboola/api-error-control

Repository files navigation

API Error Control Library

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.