meemalabs / analytics-laravel
Laravel log driver for ts-analytics error collection
v0.1.0
2026-02-26 13:31 UTC
Requires
- php: ^8.2
- illuminate/http: ^11.0|^12.0
- illuminate/support: ^11.0|^12.0
- monolog/monolog: ^3.0
Requires (Dev)
- orchestra/testbench: ^9.0|^10.0
- phpunit/phpunit: ^11.0
README
A Laravel log driver that sends errors and log entries to your ts-analytics server. Works like Flare or Bugsnag — configure it once and Laravel's exception handler automatically reports errors through the logging pipeline.
Installation
composer require meemalabs/analytics-laravel
The service provider is auto-discovered by Laravel.
Configuration
Publish the config file:
php artisan vendor:publish --tag=analytics-config
Add these to your .env:
ANALYTICS_TOKEN=ak_your_api_key ANALYTICS_SITE_ID=my-site
Add the analytics channel to your config/logging.php:
'channels' => [ 'stack' => [ 'driver' => 'stack', 'channels' => ['daily', 'analytics'], ], 'analytics' => [ 'driver' => 'analytics', 'level' => 'error', ], ],
That's it. Exceptions and error-level log entries are now sent to your analytics server automatically.
Config Reference
All options in config/analytics.php:
| Key | Env Var | Default | Description |
|---|---|---|---|
token |
ANALYTICS_TOKEN |
'' |
API key (must start with ak_) |
site_id |
ANALYTICS_SITE_ID |
'' |
Site identifier |
environment |
ANALYTICS_ENVIRONMENT |
APP_ENV |
Environment name in reports |
enabled |
ANALYTICS_ENABLED |
true |
Kill switch to disable reporting |
level |
ANALYTICS_LOG_LEVEL |
error |
Minimum log level to report |
How It Works
- The package registers an
analyticsMonolog log driver viaLog::extend() - When Laravel logs an error (or an exception is thrown), the log record reaches the
AnalyticsLogHandler - If the log context contains a
Throwable, a full error report is built with class name, message, stack trace, file, and line - Otherwise, a message-level report is built from the log message
- The report is sent via HTTP POST to the analytics endpoint (
/errors/collect) with theX-Analytics-Tokenheader - The HTTP call uses a 5-second timeout and silently catches failures — logging never crashes the app
Requirements
- PHP 8.2+
- Laravel 11+
License
MIT