kevincobain2000/laravel-alert-notifications
最新稳定版本:6.2
Composer 安装命令:
composer require kevincobain2000/laravel-alert-notifications
包简介
Alert notifications of exceptions from your laravel application
README 文档
README
Laravel Alert Notifcations
Send php exceptions to email, microsoft teams, slack.
Notifications are throttle enabled so devs don't get a lot of emails from one host
(or all hosts if cache driver is shared).
| Channels | Progress |
|---|---|
| Supported | |
| Microsoft Teams | Supported |
| Slack | Supported |
| Pager Duty | Supported |
Installation
composer require kevincobain2000/laravel-alert-notifications
If you're using Laravel 5.5+ let the package auto discovery make this for you.
'providers' => [
\Kevincobain2000\LaravelAlertNotifications\AlertNotificationsServiceProvider::class
]
Tests
composer install
composer run test
Publish (Laravel)
php artisan vendor:publish --provider="Kevincobain2000\LaravelAlertNotifications\AlertNotificationsServiceProvider"
php artisan config:cache
Publish (Lumen)
Since Lumen doesn't support auto-discovery, move config and view files to the destination directories manually
cp vendor/kevincobain2000/laravel-alert-notifications/src/config/laravel_alert_notifications.php config/laravel_alert_notifications.php mkdir -p "resources/views/vendor/laravel_alert_notifications/" && cp vendor/kevincobain2000/laravel-alert-notifications/src/views/* resources/views/vendor/laravel_alert_notifications/
and add the following to bootstrap/app.php:
$app->register(Kevincobain2000\LaravelAlertNotifications\AlertNotificationsServiceProvider::class);
.env
ALERT_NOTIFICATION_MAIL_FROM_ADDRESS=
ALERT_NOTIFICATION_MAIL_TO_ADDRESS=
ALERT_NOTIFICATION_MAIL_NOTICE_TO_ADDRESS=
ALERT_NOTIFICATION_MAIL_WARNING_TO_ADDRESS=
ALERT_NOTIFICATION_MAIL_ERROR_TO_ADDRESS=
ALERT_NOTIFICATION_MAIL_CRITICAL_TO_ADDRESS=
ALERT_NOTIFICATION_MAIL_ALERT_TO_ADDRESS=
ALERT_NOTIFICATION_MAIL_EMERGENCY_TO_ADDRESS=
ALERT_NOTIFICATION_CACHE_DRIVER=file
ALERT_NOTIFICATION_MICROSOFT_TEAMS_WEBHOOK=
ALERT_NOTIFICATION_SLACK_WEBHOOK=
ALERT_NOTIFICATION_PAGER_DUTY_INTEGRATION_KEY=
ALERT_NOTIFICATION_CURL_PROXY=
Usage
new AlertDispatcher( Exception $e [, array $dontAlertExceptions = []] // Exceptions that shouldn't trigger notifications [, array $notificationLevelsMapping = []] // [Exception class => Notification level] mapping [, array $exceptionContext = []] // Array of context data )
In app/Exceptions/Handler.php. It is better to use a try catch to prevent loop.
use Kevincobain2000\LaravelAlertNotifications\Dispatcher\AlertDispatcher; class Handler extends ExceptionHandler { private $exceptionLogLevels = [ DebugLevelException::class => LogLevel::DEBUG, WarningLevelException::class => LogLevel::WARNING, ErrorLevelException::class => LogLevel::ERROR, ]; protected $dontReport = [ // ]; public function report(Throwable $exception) { try { $dontReport = array_merge($this->dontReport, $this->internalDontReport); $alertDispatcher = new AlertDispatcher($exception, $dontReport, $this->exceptionLogLevels); $alertDispatcher->notify(); } catch (Throwable $e) { // log any unexpected exceptions or do nothing } parent::report($exception); } }
Config
| config/env key | purpose |
|---|---|
| throttle_enabled | (default true) If false then library will send alerts without any throttling |
| throttle_duration_minutes | (default 5 mins) If an exception has been notified |
| This will next notify after 5 mins when same exception occurs | |
| cache_prefix | This is a prefix for cache key. Your cache key will look like |
laravel-alert-notifications-ExceptionClass-ExceptionCode |
|
| ALERT_NOTIFICATION_CURL_PROXY | If your slack/MS teams require proxy, then set it up accordingly |
| default_notification_level | Default notification level |
| exclude_notification_levels | Do not send notification if it is of one of the listed level |
| E-mail config array: | |
| mail.enabled | (default true), false will not notify to email |
| mail.fromAddress | (default null), null will not notify to email |
| mail.toAddress | Default recipient e-mail address |
| mail.subject | Default e-mail subject. May contain placeholders replaced afterwards with |
| correspondent exception data: | |
%ExceptionMessage% => $e->getMessage() |
|
%ExceptionCode% => $e->getCode() |
|
%ExceptionType% => $e->getType() |
|
%ExceptionLevel% => current notification level |
|
ex. 'subject' => 'Exception [%ExceptionType%] has ocurred' |
|
| mail.#level# | Configs for each notification level |
notification levels refer to those defined in \Psr\Log\LogLevel |
|
| mail.#level#.toAddress | (default mail.to_address), #level# notification recipient e-mail |
| mail.#level#.subject | #level# notification e-mail subject |
| microsoft_teams.enabled | (default true), false will not notify to teams |
| microsoft_teams.webhook | (default null), null will not notify to teams |
| slack.enabled | (default true), false will not notify to slack |
| slack.webhook | (default null), null will not notify to slack |
| pager_duty.enabled | (default true), false will not notify to pager duty |
| pager_duty.events_v2_endpoint | (default https://events.pagerduty.com/v2/enqueue), should not need to change this |
| pager_duty.integration_key | (default null), null with not notify to pager duty |
Samples
Teams
Slack
Pager Duty
References
- https://qiita.com/kidatti/items/8732114ec4d1727844b8
- https://laravel-news.com/email-on-error-exceptions
Contributors ✨
Thanks goes to these wonderful people (emoji key):
Aaron Brigham ⚠️ 💻 |
Alexander Hupe 👀 ⚠️ 💻 |
Kit Loong 👀 ⚠️ 💻 |
Andrew Miller 👀 ⚠️ 💻 |
Pulkit Kathuria 👀 ⚠️ 💻 |
Masashi ⚠️ |
This project follows the all-contributors specification. Contributions of any kind welcome!
统计信息
- 总下载量: 20.2k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 26
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-03-09



