PHPackages                             andreapollastri/boogle-client - 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. andreapollastri/boogle-client

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

andreapollastri/boogle-client
=============================

Exception reporting for Laravel applications — send errors to your Boogle instance.

1.0.0(2mo ago)0204↑300%MITPHPPHP ^8.2

Since Apr 25Pushed 2mo agoCompare

[ Source](https://github.com/andreapollastri/boogle-client)[ Packagist](https://packagist.org/packages/andreapollastri/boogle-client)[ RSS](/packages/andreapollastri-boogle-client/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (8)Dependencies (5)Versions (9)Used By (0)

Boogle Client
=============

[](#boogle-client)

[![PHP](https://camo.githubusercontent.com/6dab1427c2636572a765f9e0f332c0665ce863cbc46cece88aa44f747132c260/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322d3737374242343f6c6f676f3d706870266c6f676f436f6c6f723d7768697465)](https://www.php.net/)[![Laravel](https://camo.githubusercontent.com/5ed5d963280b1293ea5c652a3c7d787f7d60559610113a3acb4e09ad848ccfef/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31302532302537432532303131253230253743253230313225323025374325323031332d4646324432303f6c6f676f3d6c61726176656c266c6f676f436f6c6f723d7768697465)](https://laravel.com/)[![License](https://camo.githubusercontent.com/64e95d6b8c7f88b6a2c557ba673b406efcc993852ca5cad7bd39685a650c39c5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d303035663733)](LICENSE)[![Packagist](https://camo.githubusercontent.com/3c6eacf1ba5cedbcf9a25833d405507b8e6fe1dd5909a987d74e1d5636a7e5cf/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616e64726561706f6c6c61737472692f626f6f676c652d636c69656e742e7376673f6c6162656c3d5061636b6167697374)](https://packagist.org/packages/andreapollastri/boogle-client)

> **Exception reporting for Laravel** — send errors, stack traces, and HTTP context from your application to a [Boogle](https://boogle.app) instance, or to any compatible ingestion endpoint.

The package hooks into Laravel’s native reporting: environment and exception filters, deduplication, and a full **request snapshot** (URL, method, body, query, optional headers and session) with sensitive keys masked.

---

Contents
--------

[](#contents)

- [Requirements](#requirements)
- [Features](#features)
- [Installation](#installation)
- [Exception handler registration](#exception-handler-registration)
- [JSON payload shape](#json-payload-shape)
- [Configuration](#configuration)
- [Artisan and testing](#artisan-and-testing)
- [Boogle app and API alignment](#boogle-app-and-api-alignment)
- [License](#license)

---

Requirements
------------

[](#requirements)

- **PHP** 8.2+
- **Laravel** 10, 11, 12, or 13
- **Guzzle** 7 (pulled in as a dependency)

---

Features
--------

[](#features)

**Laravel-native**Service provider, `Boogle` facade, Artisan commands**Exception payload**Class, message, file, line, stack (configurable frame limit), runtime info (PHP, Laravel, DB, memory)**HTTP snapshot**Under `exception.http`: URL, query, body, cookies, method, IP, user agent, client hints (browser / OS), plus optional session and headers**User**`exception.user` with `id`, `uuid`, `email`, `name` when authenticated**Safe in dev**If `BOOGLE_*` is missing or invalid, nothing is sent; use `Boogle::isEnabled()` for conditional logic**Control over delivery**Environments, ignored classes, cache-based dedup, and masking via `config/boogle.php`---

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

[](#installation)

```
composer require andreapollastri/boogle-client
php artisan boogle:install
```

`.env` variableRole`BOOGLE_KEY`API token`BOOGLE_PROJECT_KEY`Project identifier`BOOGLE_SERVER`Ingestion URL (default: `https://boogle.app/api/log`)---

Exception handler registration
------------------------------

[](#exception-handler-registration)

VersionWhere to wire**Laravel 11+**`bootstrap/app.php` → `withExceptions` callback**Laravel ≤ 10**`App\Exceptions\Handler` → `register`**Laravel 11+**

```
use Boogle\Facade as Boogle;
use Illuminate\Foundation\Configuration\Exceptions;

->withExceptions(function (Exceptions $exceptions) {
    Boogle::registerExceptionHandler($exceptions);
})
```

**Laravel 10 and below** — in `App\Exceptions\Handler::register()`:

```
$this->reportable(function (\Throwable $e) {
    Boogle::handle($e);
});
```

---

JSON payload shape
------------------

[](#json-payload-shape)

### Root

[](#root)

KeyValue`key``BOOGLE_PROJECT_KEY``token``BOOGLE_KEY``exception`Object described below### `exception` (main fields)

[](#exception-main-fields)

KeyValue`exception`Exception FQCN`error`Message`file`, `line`, `class`Where the error occurred`fileType`Default `php`, or the value passed to `handle()``executor`Stack trace (up to `lines_count` **frames**)`storage`PHP and Laravel versions, DB driver, memory use`user`When logged in: `id`, `uuid`, `email`, `name` — otherwise `null``http`**Request snapshot** (full context for Boogle)`host`Request host (or hostname with no HTTP context)`method`Same as `http.method` (backwards compatible with older views)`fullUrl`Same as `http.url`### `exception.http` (for every report that passes config)

[](#exceptionhttp-for-every-report-that-passes-config)

FieldDescription`url`Full URL including query string (`$request->fullUrl()`)`query`Query parameters array (subject to `include_query`)`payload`Body: parsed JSON or form fields, without duplicating query params; GET → `[]``cookies`Name → value (after `blacklist`), or if `cookie_values` is `false`, name → `[REDACTED]``method``GET`, `POST`, `PUT`, …`ip`Client IP`user_agent`Full user agent string`client``browser` and `os` (heuristics + Client Hints when available)`content_type``Content-Type` header value`is_json`Request detected as JSON`wants_json``expectsJson()``is_ajax``ajax()` (XMLHttpRequest)`is_secure`HTTPS`referer``Referer` header if present`headers`Only if `include_headers: true` (with masking)`session`Only if `include_session: true` (with masking)**Custom data** — third argument: `Boogle::handle($e, 'php', ['http' => ['note' => 'x']])` with [`array_replace_recursive`](https://www.php.net/array_replace_recursive) merged into `http`. Other keys in the same array are merged into `exception` as before.

The config `blacklist` masks passwords, tokens, and similar keys in query, payload, cookies, session, and headers.

---

Configuration
-------------

[](#configuration)

Published as `config/boogle.php`.

KeyRole`environments`e.g. `['production']` — reports only run in these environments`except`Exception classes that are never reported`lines_count`How many **frames** of the stack to include in `executor``sleep`Seconds to deduplicate the same exception (`0` = every throw attempts a send)`blacklist`Sub-keys to replace with `[REDACTED]``http``include_query`, `include_payload`, `include_cookies`, `cookie_values`, `include_session`, `include_headers`For backward compatibility, the older `context` key (from earlier releases) is still read: `include_input` maps to `include_payload`.

---

Artisan and testing
-------------------

[](#artisan-and-testing)

CommandWhat it does`boogle:install`Publishes the config file`boogle:test`Sends a test exception (no-op when Boogle is disabled)In tests, swap the container binding for `Boogle\Fakes\BoogleFake`.

---

Boogle app and API alignment
----------------------------

[](#boogle-app-and-api-alignment)

Notes for the [Boogle](https://boogle.app) product or a self‑hosted instance so the dashboard and storage match everything this client sends today.

1. **Ingestion (`POST` to the log URL)**

    - Persist the full **`exception`** object (JSON column or equivalent), not a narrow subset of fields.
    - In particular, map and store **`exception.http`**.
2. **Model / database**

    - A JSON field or column for **`http`**, or flat derived columns: `url`, `method`, `ip`, `user_agent`, plus JSON for `query`, `payload`, `cookies`.
    - Columns for `exception.user` (e.g. nullable `user_id`) if you need server-side indexes or filters.
3. **Error detail view**

    - A “Request / context” area with `http.url`, `http.method`, `http.query`, `http.payload`, `http.cookies`, `http.ip`, `http.user_agent`, `http.client`, and `referer` / `is_ajax` as needed.
    - A “User” area reading `exception.user` (id, email) when not `null`.
    - Keep that separate from any free-text feedback form (a different feature).
4. **API validation**

    - Avoid overly strict `validate` rules on the client body: do not drop rich payloads in `exception.http`.
5. **Indexes and privacy**

    - Optionally truncate or hash sensitive values in `http.payload` / cookies in the UI (the client already applies `blacklist`).
6. **Product documentation**

    - Official integration contract: `key`, `token`, and `exception` with the sub-structure documented in this README.

---

License
-------

[](#license)

MIT — see `composer.json` and the repository license file.

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance82

Actively maintained with recent releases

Popularity14

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity52

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

8

Last Release

89d ago

Major Versions

0.0.7 → 1.0.02026-04-26

### Community

Maintainers

![](https://www.gravatar.com/avatar/d5a4aca6f4b1579cf2e9094c907ae2a9587fab913af88535fdd2a11661443e4b?d=identicon)[andreapollastri](/maintainers/andreapollastri)

---

Top Contributors

[![andreapollastri](https://avatars.githubusercontent.com/u/18210420?v=4)](https://github.com/andreapollastri "andreapollastri (9 commits)")

---

Tags

laravelexceptionerror-trackingboogle

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/andreapollastri-boogle-client/health.svg)

```
[![Health](https://phpackages.com/badges/andreapollastri-boogle-client/health.svg)](https://phpackages.com/packages/andreapollastri-boogle-client)
```

###  Alternatives

[laravel/socialite

Laravel wrapper around OAuth 1 &amp; OAuth 2 libraries.

5.7k108.5M925](/packages/laravel-socialite)[psalm/plugin-laravel

Psalm plugin for Laravel

3345.3M347](/packages/psalm-plugin-laravel)[spatie/laravel-export

Create a static site bundle from a Laravel app

674146.0k6](/packages/spatie-laravel-export)[simplestats-io/laravel-client

Server-side analytics for Laravel that follows the full funnel from visit to registration to payment, attributed to the channel that drove it. Revenue, MRR, churn and ad-spend profit (ROAS/CAC) per channel. GDPR compliant, ad-blocker proof.

5022.6k](/packages/simplestats-io-laravel-client)[api-platform/laravel

API Platform support for Laravel

58174.6k17](/packages/api-platform-laravel)[fleetbase/core-api

Core Framework and Resources for Fleetbase API

1235.9k21](/packages/fleetbase-core-api)

PHPackages © 2026

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