oshco / db-exceptions-logger
A component which is used to log exceptions to database.
v1.3.0
2026-04-12 21:24 UTC
Requires
- php: >=8.0
- webfiori/framework: 3.0.0-RC0
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.0 or later
- WebFiori Framework v3.0.0-RC0
- 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>
Replace <your-connection> with your database connection name. The library defaults to a connection named exceptions-logger.
2. Register the error handler
In any of your application's initialization files:
use oshco\handler\DatabaseErrHandler; use oshco\database\logger\ExceptionsDB; use WebFiori\Error\Handler; Handler::registerHandler(new DatabaseErrHandler(new ExceptionsDB()));
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 ExceptionsDB.
Classes and Interfaces
| Class / Interface | Description |
|---|---|
HandlerController |
Interface for exception storage. Requires addSystemException(). |
DatabaseErrHandler |
Error handler that captures exception details and delegates storage to a HandlerController. |
ExceptionsDB |
Database layer implementing HandlerController. Provides 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