kevariable / laravel-slack-logging
Report your Errors onto Slack
Package info
github.com/kevariable/laravel-slack-logging
pkg:composer/kevariable/laravel-slack-logging
Fund package maintenance!
Requires
- php: ^8.2
- illuminate/contracts: ^10.0||^11.0||^12.0
- laravel/slack-notification-channel: ^3.5
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^2.9||^3.0
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^10.0
- phpstan/extension-installer: ^1.3||^2.0
- phpstan/phpstan-deprecation-rules: ^1.1||^2.0
- phpstan/phpstan-phpunit: ^1.3||^2.0
- phpunit/phpunit: ^11.0.1
- spatie/laravel-ray: ^1.35
This package is auto-updated.
Last update: 2026-03-05 12:30:15 UTC
README
Laravel Slack Logging is a package that sends exception notifications directly to a Slack channel using webhooks. It includes request payload in notifications, deduplicates repeated exceptions with escalating sleep intervals, and lets you skip specific exception classes or environments.
Preview
Installation
You can install the package via Composer:
composer require kevariable/laravel-slack-logging
You can publish the config file with:
php artisan vendor:publish --tag="laravel-slack-logging-config"
Usage
Add the Slack webhook URL to your .env file:
SLACK_LOGGING_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK
Then add the Slack logging channel to your config/logging.php:
'channels' => [ 'stack' => [ 'driver' => 'stack', 'channels' => ['single', 'slack'], ... ], 'slack' => [ 'driver' => 'slack-logging', ... ], ],
Now any exception thrown in your application will be sent to Slack.
Configuration
The published config file (config/slack-logging.php) provides the following options:
Environments
Only send notifications in specified environments:
'environments' => [ 'production', ],
Except
Skip specific exception classes:
'except' => [ Symfony\Component\HttpKernel\Exception\NotFoundHttpException::class, ],
Sleep (Deduplication)
Prevent duplicate exceptions from spamming your Slack channel. When the same exception is raised repeatedly, the sleep duration escalates through the configured steps:
'sleep' => [60, 120, 300],
| Occurrence | Action | Next cooldown |
|---|---|---|
| 1st | Sent to Slack | 60s |
| 2nd (within 60s) | Suppressed | 120s |
| 3rd (within 120s) | Suppressed | 300s |
| 4th+ (within 300s) | Suppressed | 300s (capped) |
| After cooldown expires | Sent again | Resets to 60s |
Set to an empty array to disable deduplication:
'sleep' => [],
Payload
Request parameters are automatically included in the Slack notification when available, making it easier to debug the exception context.
Testing
composer test
Testing in Your Application
Use the facade fake to assert exceptions in your tests:
use Kevariable\SlackLogging\Facades\SlackLogging; SlackLogging::fake(); // trigger exception... SlackLogging::assertRequestsSent(1);
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see License File for more information.