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
Requires
- php: ^8.2
- ext-json: *
- keboola/common-exceptions: ^1.0
- monolog/monolog: ^2.0|^3.0
- symfony/http-foundation: ^5.0|^6.0
- symfony/http-kernel: ^5.0|^6.0
Requires (Dev)
- keboola/coding-standard: >=13.0
- phpstan/phpstan: ^1.8
- phpstan/phpstan-phpunit: ^1.1
- phpstan/phpstan-symfony: ^1.1
- phpunit/phpunit: ^9.5
README
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 inservices.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 toservices.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.