oshco / db-exceptions-logger
A component which is used to log exceptions to database.
v2.0.0
2026-05-10 15:28 UTC
Requires
- php: >=8.1
- webfiori/framework: ~3.0.0-RC@RC
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.86
- phpunit/phpunit: ^10
README
A WebFiori framework extension that logs exceptions to a database. Currently supports SQL Server only.
Requirements
- PHP 8.1 or later
- WebFiori Framework v3.0.0-RC
- SQL Server with ODBC Driver 18
Installation
composer require oshco/db-exceptions-logger
Setup
1. Initialize the database table
The library uses migrations to create the system_exceptions table. Run:
php webfiori migrations:ini --connection=<your-connection> php webfiori migrations:run --connection=<your-connection>
2. Register the error handler
use Oshco\ErrHandler\DatabaseErrHandler; use Oshco\Infrastructure\Repository\ExceptionsRepository; use WebFiori\Error\Handler; use WebFiori\Framework\App; $db = App::getDatabase('your-connection'); $repo = new ExceptionsRepository($db); Handler::registerHandler(new DatabaseErrHandler($repo));
How It Works
When an exception occurs, DatabaseErrHandler captures:
- Exception code, class, and message
- File, line number, and stack trace
- Request URL and parameters
- A SHA-256 hash of the exception for deduplication
All data is stored in the system_exceptions table via ExceptionsRepository.
Classes
| Class | Description |
|---|---|
DatabaseErrHandler |
Error handler that captures exception details and delegates storage to ExceptionsRepository. |
ExceptionsRepository |
Repository providing CRUD operations on the system_exceptions table. |
SystemExceptionsTable |
MSSQL table schema definition for system_exceptions. |
SystemException |
Entity representing a logged exception record. |
Running Tests
Requires a running SQL Server instance:
SA_SQL_SERVER_PASSWORD='<your-password>' composer test
License
MIT