errly / laravel-errly
Error monitoring with beautiful Slack notifications for Laravel applications
Fund package maintenance!
jeromecoloma
Requires
- php: ^8.2
- illuminate/contracts: ^12.0
- laravel/slack-notification-channel: ^3.0
- 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.0||^9.0.0||^8.22.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
- phpstan/extension-installer: ^1.3||^2.0
- phpstan/phpstan-deprecation-rules: ^1.1||^2.0
- phpstan/phpstan-phpunit: ^1.3||^2.0
This package is auto-updated.
Last update: 2025-07-15 09:35:02 UTC
README
- ๐จ Instant Slack alerts - Get notified the moment errors happen
- โก Simple setup - Add one line to
bootstrap/app.php
and configure your webhook - ๐จ Beautiful notifications - Rich, actionable Slack messages with context
- ๐ก๏ธ Smart filtering - Only get alerts for errors that matter
- ๐ Laravel 12 native - Built for modern Laravel architecture
- ๐ Free & open source - No subscription fees or limits
Note: Currently# ๐จ Laravel Errly
Early error detection and beautiful Slack notifications for Laravel 12 applications.
Laravel Errly is the simplest way to get instant Slack notifications when critical errors occur in your Laravel application. Built specifically for Laravel 12's modern architecture with minimal setup - just one line of code and a Slack webhook.
โจ Why Laravel Errly?
- ๐จ Instant Slack alerts - Get notified the moment errors happen
- โก Simple setup - Add one line to
bootstrap/app.php
and configure your webhook - ๐จ Beautiful notifications - Rich, actionable Slack messages with context
- ๐ก๏ธ Smart filtering - Only get alerts for errors that matter
- ๐ Laravel 12 native - Built for modern Laravel architecture
- ๐ Free & open source - No subscription fees or limits
๐ข Currently supports Slack notifications. Discord, Teams, and email support are planned for future releases.
๐ฏ Quick Start
Get Laravel Errly running in under 2 minutes:
1. Install
composer require errly/laravel-errly
2. Publish Config
php artisan vendor:publish --tag=laravel-errly-config
3. Add Your Slack Webhook
# .env ERRLY_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK/URL
4. Enable in Bootstrap
// bootstrap/app.php use Errly\LaravelErrly\ErrlyServiceProvider; return Application::configure(basePath: dirname(__DIR__)) // ... other configuration ->withExceptions(function (Exceptions $exceptions): void { // Only configure Errly if the package is installed if (class_exists(ErrlyServiceProvider::class)) { ErrlyServiceProvider::configureExceptions($exceptions); } }) ->create();
5. Test It!
php artisan errly:test
That's it! You'll receive a beautiful Slack notification with error details.
๐ฑ What Your Slack Notifications Look Like
When an error occurs, you'll receive rich notifications like this:
๐จ **CRITICAL Error in MyApp Production**
๐ Error Details
Exception: Illuminate\Database\QueryException
Message: SQLSTATE[42S02]: Base table or view not found
File: /app/Http/Controllers/UserController.php
Line: 42
URL: https://myapp.com/users/123
Method: GET
User: john@example.com (ID: 1234)
Environment: production
Server: web-01
๐ Stack Trace
#0 /app/Http/Controllers/UserController.php(42): ...
#1 /app/vendor/laravel/framework/src/...
[... truncated]
โ๏ธ Configuration
Laravel Errly works great out of the box, but you can customize everything:
// config/errly.php return [ 'enabled' => env('ERRLY_ENABLED', true), 'slack' => [ 'webhook_url' => env('ERRLY_SLACK_WEBHOOK_URL'), 'channel' => env('ERRLY_SLACK_CHANNEL', '#errors'), 'username' => env('ERRLY_SLACK_USERNAME', 'Laravel Errly'), 'emoji' => env('ERRLY_SLACK_EMOJI', '๐จ'), ], 'filters' => [ 'environments' => [ 'enabled' => env('ERRLY_FILTER_ENVIRONMENTS', true), 'allowed' => explode(',', env('ERRLY_ALLOWED_ENVIRONMENTS', 'production,staging')), ], // Automatically ignores noise like 404s, validation errors 'ignored_exceptions' => [ \Illuminate\Validation\ValidationException::class, \Symfony\Component\HttpKernel\Exception\NotFoundHttpException::class, // ... more ], // High-priority alerts for critical errors 'critical_exceptions' => [ \Illuminate\Database\QueryException::class, \ErrorException::class, // ... more ], ], 'rate_limiting' => [ 'enabled' => env('ERRLY_RATE_LIMITING', true), 'max_per_minute' => env('ERRLY_MAX_PER_MINUTE', 10), ], ];
๐ Usage Examples
Environment Variables
# Basic Setup ERRLY_ENABLED=true ERRLY_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/T.../B.../xxx # Advanced Configuration ERRLY_SLACK_CHANNEL=#production-errors ERRLY_SLACK_USERNAME="MyApp Alerts" ERRLY_SLACK_EMOJI=โ ๏ธ # Environment Filtering (only report in production) ERRLY_FILTER_ENVIRONMENTS=true ERRLY_ALLOWED_ENVIRONMENTS=production,staging # Rate Limiting (prevent spam) ERRLY_RATE_LIMITING=true ERRLY_MAX_PER_MINUTE=5 # Custom App Name ERRLY_APP_NAME="My Awesome App"
Manual Error Reporting
use Errly\LaravelErrly\Facades\Errly; try { // Risky operation $result = $this->processPayment($amount); } catch (PaymentException $e) { // Report with custom context Errly::report($e, [ 'user_id' => auth()->id(), 'amount' => $amount, 'payment_method' => 'stripe', ]); // Handle gracefully return response()->json(['error' => 'Payment failed'], 500); }
Testing Different Error Types
# Test general errors php artisan errly:test # Test critical errors (database, fatal errors) php artisan errly:test critical # Test validation errors (should be ignored) php artisan errly:test validation # Test custom errors php artisan errly:test custom
๐ก๏ธ Security Features
Laravel Errly automatically protects sensitive data:
- ๐ Redacts passwords - Never exposes authentication data
- ๐ Filters headers - Removes authorization tokens
- ๐ Configurable sensitive fields - Define your own protected fields
- ๐ Safe by default - Conservative data collection
// Sensitive fields are automatically redacted 'sensitive_fields' => [ 'password', 'password_confirmation', 'token', 'api_key', 'credit_card', 'ssn', ],
โก Performance
Laravel Errly is designed for zero performance impact:
- Async notifications - Won't slow down your app
- Smart rate limiting - Prevents notification spam
- Efficient filtering - Only processes errors that matter
- Minimal memory usage - Lightweight error context collection
๐๏ธ Advanced Features
Severity Levels
Errors are automatically categorized:
- ๐ด CRITICAL - Database errors, fatal errors, parse errors
- ๐ก HIGH - HTTP 500+ errors
- ๐ข MEDIUM - General exceptions, runtime errors
Context Collection
Rich error context includes:
- Request details - URL, method, IP, user agent
- User information - ID, email, name (if authenticated)
- Server information - Hostname, environment
- Stack traces - Full error traces (configurable length)
Smart Filtering
Automatically ignores noise:
- โ 404 errors - Page not found
- โ Validation errors - Form validation failures
- โ Auth errors - Login failures
- โ Rate limiting errors - Too many requests
๐งช Testing
Laravel Errly includes comprehensive testing tools:
# Test your Slack integration php artisan errly:test # Test specific error types php artisan errly:test database php artisan errly:test critical php artisan errly:test validation # Run the package test suite composer test # Check code quality composer analyse
๐ Requirements
- PHP 8.2+
- Laravel 12+
- Slack workspace with webhook URL (Discord, Teams, Email coming soon)
๐ง Installation & Setup
Step 1: Install Package
composer require errly/laravel-errly
Step 2: Publish Configuration
php artisan vendor:publish --tag=laravel-errly-config
Step 3: Create Slack Webhook
- Go to Slack API Apps
- Create new app โ "From scratch"
- Enable "Incoming Webhooks"
- Add webhook to your desired channel
- Copy the webhook URL
Step 4: Configure Environment
ERRLY_ENABLED=true ERRLY_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK/URL ERRLY_SLACK_CHANNEL=#errors
Step 5: Enable Exception Handling
// bootstrap/app.php use Errly\LaravelErrly\ErrlyServiceProvider; return Application::configure(basePath: dirname(__DIR__)) ->withExceptions(function (Exceptions $exceptions): void { // Only configure Errly if the package is installed if (class_exists(ErrlyServiceProvider::class)) { ErrlyServiceProvider::configureExceptions($exceptions); } }) ->create();
Step 6: Test
php artisan errly:test
Check your Slack channel for the test notification!
๐ค Contributing
We love contributions! Please see CONTRIBUTING.md for details.
Development Setup
git clone https://github.com/jeromecoloma/laravel-errly.git cd laravel-errly composer install composer test
Running Tests
composer test # Run test suite composer analyse # Static analysis composer format # Code formatting
๐ Changelog
Please see CHANGELOG.md for recent changes.
๐ ๏ธ Troubleshooting
Not receiving Slack notifications?
1. Check your webhook URL
# Test with curl curl -X POST -H 'Content-type: application/json' \ --data '{"text":"Test from curl"}' \ YOUR_WEBHOOK_URL
2. Verify configuration
php artisan tinker >>> config('errly.enabled') >>> config('errly.slack.webhook_url')
3. Check Laravel logs
tail -f storage/logs/laravel.log
4. Test manually
use Errly\LaravelErrly\Facades\Errly; Errly::report(new Exception('Manual test'));
Too many notifications?
Enable rate limiting:
ERRLY_RATE_LIMITING=true ERRLY_MAX_PER_MINUTE=5
Notifications in development?
Use environment filtering:
ERRLY_FILTER_ENVIRONMENTS=true ERRLY_ALLOWED_ENVIRONMENTS=production,staging
๐ License
Laravel Errly is open-sourced software licensed under the MIT license.
๐ Credits
- Jerome Coloma - Creator and maintainer
- Laravel Community - Inspiration and feedback
- Spatie - Package development tools
๐ Support
If Laravel Errly helps you catch errors early, consider:
- โญ Starring the repo on GitHub
- ๐ฆ Sharing on Twitter with #LaravelErrly
- ๐ Writing a blog post about your experience
- ๐ฌ Joining discussions in Issues
Built with โค๏ธ for the Laravel community
โญ Star on GitHub โข ๐ฆ View on Packagist โข ๐ Report Issues โข ๐ฌ Discussions