PHPackages                             techforce/openlogs-laravel - 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. techforce/openlogs-laravel

ActiveLibrary

techforce/openlogs-laravel
==========================

Laravel bridge for OpenLogs: a first-class log channel with optional queued delivery, built on techforce/openlogs-monolog.

00

Since Jul 22Compare

[ Source](https://github.com/TechForce-US/openlogs-laravel)[ Packagist](https://packagist.org/packages/techforce/openlogs-laravel)[ RSS](/packages/techforce-openlogs-laravel/feed)WikiDiscussions Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

openlogs-laravel
================

[](#openlogs-laravel)

A Laravel bridge for [OpenLogs](https://github.com/jmstewart1127/openlogs): adds a first-class `openlogs` log channel with **optional queued delivery** on a dedicated queue. Built on the framework-agnostic [`techforce/openlogs-monolog`](https://github.com/techforce/openlogs-monolog)handler.

Install
-------

[](#install)

```
composer require techforce/openlogs-laravel
```

The service provider is auto-discovered. Publish the config if you want to tweak defaults:

```
php artisan vendor:publish --tag=openlogs-config
```

Configure
---------

[](#configure)

Set your OpenLogs connection in `.env`:

```
OPENLOGS_URL=https://logs.example.com
OPENLOGS_API_KEY=your-project-api-key
```

Add the channel to `config/logging.php`:

```
'channels' => [
    'openlogs' => [
        'driver' => 'custom',
        'via'    => \TechForce\OpenLogs\Laravel\OpenLogsChannel::class,
    ],

    // ...or send everything there via a stack:
    'stack' => [
        'driver'   => 'stack',
        'channels' => ['single', 'openlogs'],
    ],
],
```

Then log as usual:

```
Log::channel('openlogs')->info('User signed up', ['user_id' => 42]);
```

Records are buffered and delivered to OpenLogs as a single batch at the end of the request (or when the buffer fills).

Config reference (`config/openlogs.php`)
----------------------------------------

[](#config-reference-configopenlogsphp)

KeyEnvDefaultDescription`url``OPENLOGS_URL`—OpenLogs base URL`api_key``OPENLOGS_API_KEY`—Project API key`level``OPENLOGS_LEVEL``debug`Minimum level`buffer_limit``OPENLOGS_BUFFER_LIMIT``500`Records buffered before an automatic flush`timeout``OPENLOGS_TIMEOUT``5.0`HTTP timeout (seconds)`fallback_channel``OPENLOGS_FALLBACK_CHANNEL``single`Channel used when delivery fails`queue.enabled``OPENLOGS_QUEUE``false`Deliver via a background job`queue.connection``OPENLOGS_QUEUE_CONNECTION`defaultQueue connection for the job`queue.queue``OPENLOGS_QUEUE_NAME``openlogs`Queue name (dedicated — never `default`)Queued delivery
---------------

[](#queued-delivery)

To move the HTTP POST off the request and onto a background worker:

```
OPENLOGS_QUEUE=true
```

Each batch is dispatched as a `SendLogBatch` job carrying the normalized entries. It targets a **dedicated `openlogs` queue** by default so log shipping never competes with your application's jobs. Run a worker for it:

```
php artisan queue:work --queue=openlogs
```

Failure handling in queued mode: the job uses the queue's retry/backoff for transient outages, and after retries are exhausted it replays the batch to your `fallback_channel`.

> **Note:** don't route your queue worker's own logs through the `openlogs`channel — that can create a delivery loop. The `fallback_channel` is automatically guarded against pointing back at `openlogs`.

Fallback
--------

[](#fallback)

If OpenLogs is unreachable (or returns an error), the batch is written to `fallback_channel` (default `single`) so logs are never lost. A fallback that would resolve back to the `openlogs` channel is detected and disabled.

License
-------

[](#license)

MIT

###  Health Score

9

—

LowBetter than 0% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity0

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/8a0496b0e3fc2a00564f53a8b9723d17b926e64b4dded05fb885c10a5310d246?d=identicon)[Jmstewart1127](/maintainers/Jmstewart1127)

### Embed Badge

![Health badge](/badges/techforce-openlogs-laravel/health.svg)

```
[![Health](https://phpackages.com/badges/techforce-openlogs-laravel/health.svg)](https://phpackages.com/packages/techforce-openlogs-laravel)
```

PHPackages © 2026

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