oshco/db-exceptions-logger

A component which is used to log exceptions to database.

Maintainers

Package info

github.com/OSHCO/db-exceptions-logger

pkg:composer/oshco/db-exceptions-logger

Statistics

Installs: 849

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.3.0 2026-04-12 21:24 UTC

This package is auto-updated.

Last update: 2026-04-12 21:26:04 UTC


README

A WebFiori framework extension that logs exceptions to a database. Currently supports SQL Server only.

Requirements

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