PHPackages                             anode/error-handler - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Logging &amp; Monitoring](/categories/logging)
4. /
5. anode/error-handler

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

anode/error-handler
===================

A simple error handler for PHP applications.

v1.0.19(1y ago)115MITPHPPHP ^8.0

Since Mar 24Pushed 1y ago1 watchersCompare

[ Source](https://github.com/arnoldduo2/error-handler)[ Packagist](https://packagist.org/packages/anode/error-handler)[ RSS](/packages/anode-error-handler/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (1)Versions (12)Used By (0)

Anode PHP Error Handler
=======================

[](#anode-php-error-handler)

A robust, customizable, and developer-friendly error handler for PHP applications. This library provides a comprehensive solution for managing errors, exceptions, and fatal errors, ensuring a smoother development process and a better user experience.

Key Features
------------

[](#key-features)

- **Graceful Error Handling:** Catches and manages PHP errors, exceptions, and fatal errors effectively.
- **Customizable Logging:** Flexible error logging to files, with options for separate development logs and email notifications.
- **User-Friendly Error Views:** Provides customizable error views for a better user experience, with distinct views for development and production environments.
- **Detailed Debugging:** Offers detailed error information for developers in development mode, including stack traces and error details.
- **Easy Integration:** Simple to integrate into any PHP project with minimal setup.
- **Environment-Aware:** Adapts error handling behavior based on the application environment (development/production).
- **Email Logging:** Option to send error logs directly to an email address.
- **AJAX Support:** Handles errors gracefully for AJAX requests, returning JSON responses.
- **PSR-4 Compliant:** Follows PSR-4 autoloading standards.

Installation
------------

[](#installation)

1. **Install via Composer (Recommend):**

    ```
    composer require anode/error-handler
    ```
2. **Manual Installation (Less Recommended):**

    - Clone the repository: ```
        git clone https://github.com/anoldduo2/error-handler.git
        ```
    - Install dependencies (if any) via Composer: ```
        composer install
        ```

Usage
-----

[](#usage)

1. **Include the Autoloader:**

    In your application's entry point (e.g., `index.php`), include the Composer autoloader:

    ```
    require 'vendor/autoload.php';
    ```
2. **Initialize and Register the Error Handler:**

    ```
    use Anode\ErrorHandler\ErrorHandler;

    // Basic initialization with default options
    $errorHandler = new ErrorHandler();

    // Or, with custom options:
    $errorHandler = new ErrorHandler([
        'app_name' => 'My Awesome App',
        'app_enviroment' => 'production', // or 'development'
        'app_debug' => false, // or true
        'base_url' => 'https://myapp.com',
        'log_directory' => __DIR__ . '/storage/logs/',
        'dev_logs' => true,
        'dev_logs_directory' => __DIR__ . '/storage/logs/dev/',
        'error_view' => __DIR__ . '/views/user.php',
        // ... other options
    ]);
    ```

    **Note:****1.** The `ErrorHandler` constructor automatically registers itself as the error, exception, and shutdown handler. No need for a separate `register()` method. **2.** You can create your own custom error\_view that diplays the user E500 - Internal Server Error page. This is most crucial if you want to maintain consistancy of your error pages e.g your E404, E403 etc. **3.** In `development` enviroment the E500 page will always provide a fully detail error page that you cannot change, unless you change your enviroment to `production`.

Configuration Options
---------------------

[](#configuration-options)

The `ErrorHandler` constructor accepts an array of options to customize its behavior. Here are the available options:

OptionTypeDefaultDescription`app_name``string``Anode Error Handler`The name of the application.`app_enviroment``string``development`The application environment (e.g., 'development', 'production').`app_debug``bool``true`Whether to display detailed error messages (true) or user-friendly messages (false).`base_url``string``/`The base URL of the application.`error_reporting_level``int``E_ALL`The level of error reporting.`display_errors``bool``false`Whether to display errors.`log_errors``bool``true`Whether to log errors.`log_directory``string``__DIR__ . '/../../storage/logs/'`The directory where error logs are saved.`dev_logs``bool``false`Whether to enable developer-specific logging.`dev_logs_directory``string``__DIR__ . '/../../storage/logs/dev/'`The directory for developer logs.`email_logging``bool``false`Whether to enable email logging.`email_logging_address``string``''`The email address to send error logs to.`email_logging_subject``string``Error Log`The subject of the email for error logs.`email_logging_mailer``object``null`The mailer object to use for sending emails.`email_logging_mailer_options``array``[]`The options for the mailer.`error_view``string``null`The path to the error view file. that matches your application. If null the handler will use its default.Examples
--------

[](#examples)

### Basic Usage

[](#basic-usage)

```
use Anode\ErrorHandler\ErrorHandler;

$errorHandler = new ErrorHandler();
throw new Exception("This is a test exception.");
```

### Custom Logging and Email Notifications

[](#custom-logging-and-email-notifications)

```
use Anode\ErrorHandler\ErrorHandler;

$errorHandler = new ErrorHandler([
    'email_logging' => true,
    'email_logging_address' => 'admin@example.com',
    'email_logging_subject' => 'Critical Error',
    'email_logging_mailer' => new PHPMailer(), //Exposes the send method
    'email_logging_mailer_options' => [], // An array of your mailer object options
]);

trigger_error("This is a test error.", E_USER_WARNING);
```

Screenshots
-----------

[](#screenshots)

[![Screenshot 2025-03-24 222510](https://private-user-images.githubusercontent.com/77221339/426255482-1ea94a23-a6c7-470e-8649-cef130c21d87.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzU1Njc4NzEsIm5iZiI6MTc3NTU2NzU3MSwicGF0aCI6Ii83NzIyMTMzOS80MjYyNTU0ODItMWVhOTRhMjMtYTZjNy00NzBlLTg2NDktY2VmMTMwYzIxZDg3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA0MDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNDA3VDEzMTI1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBmMzNhNTRlMDQ1MTI1NTJlZDk2MjFkNzNmNTg1MGFlZWJiYjdjNGJlYmMwODk2MTA5Mzc5Y2U4ZTFlOTYwOWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.iraEySX40ww4DDBLBdfHtfck_Wd-ZE8cnAUFO9IIE7k)](https://private-user-images.githubusercontent.com/77221339/426255482-1ea94a23-a6c7-470e-8649-cef130c21d87.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzU1Njc4NzEsIm5iZiI6MTc3NTU2NzU3MSwicGF0aCI6Ii83NzIyMTMzOS80MjYyNTU0ODItMWVhOTRhMjMtYTZjNy00NzBlLTg2NDktY2VmMTMwYzIxZDg3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA0MDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNDA3VDEzMTI1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBmMzNhNTRlMDQ1MTI1NTJlZDk2MjFkNzNmNTg1MGFlZWJiYjdjNGJlYmMwODk2MTA5Mzc5Y2U4ZTFlOTYwOWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.iraEySX40ww4DDBLBdfHtfck_Wd-ZE8cnAUFO9IIE7k)[![production without debug enabled](https://private-user-images.githubusercontent.com/77221339/426255473-b4976209-cb01-4841-a0dc-1d9b121b66b0.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzU1Njc4NzEsIm5iZiI6MTc3NTU2NzU3MSwicGF0aCI6Ii83NzIyMTMzOS80MjYyNTU0NzMtYjQ5NzYyMDktY2IwMS00ODQxLWEwZGMtMWQ5YjEyMWI2NmIwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA0MDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNDA3VDEzMTI1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ5NjhlMDhhMGQ4Yzg2MDNkZWU4MGEwZjE0YWFiYTE3ZjkzNDczNjIxYWJiODhmYzhiMGM0NDk2OWU1NzY1YjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.rW2tExofR48ypyaKh8y1XxuJFd--nepLQ6RV9dvdHZU)](https://private-user-images.githubusercontent.com/77221339/426255473-b4976209-cb01-4841-a0dc-1d9b121b66b0.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzU1Njc4NzEsIm5iZiI6MTc3NTU2NzU3MSwicGF0aCI6Ii83NzIyMTMzOS80MjYyNTU0NzMtYjQ5NzYyMDktY2IwMS00ODQxLWEwZGMtMWQ5YjEyMWI2NmIwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA0MDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNDA3VDEzMTI1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ5NjhlMDhhMGQ4Yzg2MDNkZWU4MGEwZjE0YWFiYTE3ZjkzNDczNjIxYWJiODhmYzhiMGM0NDk2OWU1NzY1YjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.rW2tExofR48ypyaKh8y1XxuJFd--nepLQ6RV9dvdHZU)[![production with debug enabled](https://private-user-images.githubusercontent.com/77221339/426255467-42a351f0-565b-4972-a4b0-0fbffc09dd4d.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzU1Njc4NzEsIm5iZiI6MTc3NTU2NzU3MSwicGF0aCI6Ii83NzIyMTMzOS80MjYyNTU0NjctNDJhMzUxZjAtNTY1Yi00OTcyLWE0YjAtMGZiZmZjMDlkZDRkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA0MDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNDA3VDEzMTI1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWM0Yjg5MmUwNTkyMDhkNWZhOGU4NTYzNmRlMTZmYjk3MzA1ZTYxNmQ4MDEyMWVhMzJkMzk4OTQ5NDlhMWZkOTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.WzvwMnqRYKAaCMgEfYnh2Rgj1968hiA5MzVmtaVUqQ0)](https://private-user-images.githubusercontent.com/77221339/426255467-42a351f0-565b-4972-a4b0-0fbffc09dd4d.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzU1Njc4NzEsIm5iZiI6MTc3NTU2NzU3MSwicGF0aCI6Ii83NzIyMTMzOS80MjYyNTU0NjctNDJhMzUxZjAtNTY1Yi00OTcyLWE0YjAtMGZiZmZjMDlkZDRkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA0MDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNDA3VDEzMTI1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWM0Yjg5MmUwNTkyMDhkNWZhOGU4NTYzNmRlMTZmYjk3MzA1ZTYxNmQ4MDEyMWVhMzJkMzk4OTQ5NDlhMWZkOTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.WzvwMnqRYKAaCMgEfYnh2Rgj1968hiA5MzVmtaVUqQ0)[![Screenshot 2025-03-24 222932](https://private-user-images.githubusercontent.com/77221339/426255443-9122ea29-c85d-4030-9a6f-440bf2410eb5.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzU1Njc4NzEsIm5iZiI6MTc3NTU2NzU3MSwicGF0aCI6Ii83NzIyMTMzOS80MjYyNTU0NDMtOTEyMmVhMjktYzg1ZC00MDMwLTlhNmYtNDQwYmYyNDEwZWI1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA0MDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNDA3VDEzMTI1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRlMDcwOGEyMDg5OTg3ZmY1MTBlMWE3MDYzZmQ0ZWIyNjgzNzcwZDMxZjliYmRmYjc5NzUxMDg2NTY2MDhjZWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.YG6pEa13PPTZUJOYuV15ZdOKmr8_-xoisAapX4HAoyc)](https://private-user-images.githubusercontent.com/77221339/426255443-9122ea29-c85d-4030-9a6f-440bf2410eb5.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzU1Njc4NzEsIm5iZiI6MTc3NTU2NzU3MSwicGF0aCI6Ii83NzIyMTMzOS80MjYyNTU0NDMtOTEyMmVhMjktYzg1ZC00MDMwLTlhNmYtNDQwYmYyNDEwZWI1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA0MDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNDA3VDEzMTI1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRlMDcwOGEyMDg5OTg3ZmY1MTBlMWE3MDYzZmQ0ZWIyNjgzNzcwZDMxZjliYmRmYjc5NzUxMDg2NTY2MDhjZWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.YG6pEa13PPTZUJOYuV15ZdOKmr8_-xoisAapX4HAoyc)[![Screenshot 2025-03-24 222845](https://private-user-images.githubusercontent.com/77221339/426255423-06ede249-f1e0-4578-acca-582c4c4508db.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzU1Njc4NzEsIm5iZiI6MTc3NTU2NzU3MSwicGF0aCI6Ii83NzIyMTMzOS80MjYyNTU0MjMtMDZlZGUyNDktZjFlMC00NTc4LWFjY2EtNTgyYzRjNDUwOGRiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA0MDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNDA3VDEzMTI1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc2MGI2YzBjMDRjNjRjNTdkZWFiM2NlNTBhMDZjN2Y2YTM4NjQxYmJmNDdiM2M4MzI3MDc0MDdkZTg5MGQyNDEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.RWwROUcL4A9ICgNKSwnIf1aL8Rk_b_zuqXabDAcklBY)](https://private-user-images.githubusercontent.com/77221339/426255423-06ede249-f1e0-4578-acca-582c4c4508db.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzU1Njc4NzEsIm5iZiI6MTc3NTU2NzU3MSwicGF0aCI6Ii83NzIyMTMzOS80MjYyNTU0MjMtMDZlZGUyNDktZjFlMC00NTc4LWFjY2EtNTgyYzRjNDUwOGRiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNjA0MDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjYwNDA3VDEzMTI1MVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc2MGI2YzBjMDRjNjRjNTdkZWFiM2NlNTBhMDZjN2Y2YTM4NjQxYmJmNDdiM2M4MzI3MDc0MDdkZTg5MGQyNDEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.RWwROUcL4A9ICgNKSwnIf1aL8Rk_b_zuqXabDAcklBY)

Contributing
------------

[](#contributing)

Contributions are welcome! If you encounter any issues or have suggestions for improvements, feel free to open an issue or submit a pull request on [GitHub](https://github.com/anoldduo2/error-handler).

License
-------

[](#license)

This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.

Contributing
------------

[](#contributing-1)

Contributions are welcome! Please submit issues or pull requests via the [GitHub repository](https://github.com/anoldduo2/error-handler).

Support
-------

[](#support)

If you have any questions or need help, feel free to reach out via [GitHub Issues](https://github.com/anoldduo2/error-handler/issues).

---

This README file should now provide a comprehensive overview of your project, including installation, usage, configuration, and additional resources for contributors and users.

Acknowledgements
----------------

[](#acknowledgements)

Created by Arnold Tinashe Samhungu.

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance46

Moderate activity, may be stable

Popularity7

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

11

Last Release

420d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7e7ccb91b55d379c70c101aa885553dc1ebcab13bbec8b4abaae7daf91b06bd2?d=identicon)[arnoldduo2](/maintainers/arnoldduo2)

---

Top Contributors

[![arnoldduo2](https://avatars.githubusercontent.com/u/77221339?v=4)](https://github.com/arnoldduo2 "arnoldduo2 (20 commits)")

---

Tags

loggingexceptionerrorhandler

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/anode-error-handler/health.svg)

```
[![Health](https://phpackages.com/badges/anode-error-handler/health.svg)](https://phpackages.com/packages/anode-error-handler)
```

###  Alternatives

[justbetter/magento2-sentry

Magento 2 Logger for Sentry

1851.5M3](/packages/justbetter-magento2-sentry)[phptek/sentry

Sentry.io integration for SilverStripe. Binds Sentry.io to SilverStripe's error &amp; exception handling subsystem.

15203.5k3](/packages/phptek-sentry)[e2ex/e2ex

Converts PHP Errors to Exceptions and (optionally) logs PHP Errors, Notices and Warnings with a PSR-3 compatible logger

101.5k](/packages/e2ex-e2ex)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
