{"id":18010809,"url":"https://github.com/guanguans/laravel-exception-notify","last_synced_at":"2026-04-01T23:11:06.233Z","repository":{"id":42441566,"uuid":"382252812","full_name":"guanguans/laravel-exception-notify","owner":"guanguans","description":"Monitor exception and report to the notification channels(Log、Mail、AnPush、Bark、Chanify、DingTalk、Discord、Gitter、GoogleChat、IGot、Lark、Mattermost、MicrosoftTeams、NowPush、Ntfy、Push、Pushback、PushBullet、PushDeer、PushMe、Pushover、PushPlus、QQ、RocketChat、ServerChan、ShowdocPush、SimplePush、Slack、Telegram、WeWork、WPush、XiZhi、YiFengChuanHua、ZohoCliq、Zulip).","archived":false,"fork":false,"pushed_at":"2026-03-27T08:14:40.000Z","size":16619,"stargazers_count":146,"open_issues_count":0,"forks_count":13,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-03-29T21:51:42.816Z","etag":null,"topics":["bark","chanify","discord","error","exception","laravel","monitor","notification","notifier","notify","pushdeer","qq-bot","slack","telegram"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/guanguans.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":"https://guanguans.github.io/sponsors"}},"created_at":"2021-07-02T06:31:13.000Z","updated_at":"2026-03-27T08:14:38.000Z","dependencies_parsed_at":"2023-02-19T03:45:27.369Z","dependency_job_id":"191aad16-f3f8-4127-a8ee-a54c1dc90a6c","html_url":"https://github.com/guanguans/laravel-exception-notify","commit_stats":{"total_commits":675,"total_committers":6,"mean_commits":112.5,"dds":"0.13629629629629625","last_synced_commit":"4b23cb824077769899b7f3c3983e481e4bf46dfc"},"previous_names":[],"tags_count":139,"template":false,"template_full_name":null,"purl":"pkg:github/guanguans/laravel-exception-notify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guanguans%2Flaravel-exception-notify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guanguans%2Flaravel-exception-notify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guanguans%2Flaravel-exception-notify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guanguans%2Flaravel-exception-notify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guanguans","download_url":"https://codeload.github.com/guanguans/laravel-exception-notify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guanguans%2Flaravel-exception-notify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292822,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bark","chanify","discord","error","exception","laravel","monitor","notification","notifier","notify","pushdeer","qq-bot","slack","telegram"],"created_at":"2024-10-30T02:15:25.063Z","updated_at":"2026-04-01T23:11:06.226Z","avatar_url":"https://github.com/guanguans.png","language":"PHP","funding_links":["https://guanguans.github.io/sponsors"],"categories":[],"sub_categories":[],"readme":"# laravel-exception-notify\n\n\u003cp align=\"center\"\u003e\u003cimg src=\"docs/ntfy.jpg\" width=\"100%\" alt=\"usage\" title=\"usage\"\u003e\u003c/p\u003e\n\n\u003e Monitor exception and report to the notification channels(Log、Mail、AnPush、Bark、Chanify、DingTalk、Discord、Gitter、GoogleChat、IGot、Lark、Mattermost、MicrosoftTeams、NowPush、Ntfy、Push、Pushback、PushBullet、PushDeer、PushMe、Pushover、PushPlus、QQ、RocketChat、ServerChan、ShowdocPush、SimplePush、Slack、Telegram、WeWork、WPush、XiZhi、YiFengChuanHua、ZohoCliq、ZohoCliqWebHook、Zulip).\n\n[![tests](https://github.com/guanguans/laravel-exception-notify/actions/workflows/tests.yml/badge.svg)](https://github.com/guanguans/laravel-exception-notify/actions/workflows/tests.yml)\n[![php-cs-fixer](https://github.com/guanguans/laravel-exception-notify/actions/workflows/php-cs-fixer.yml/badge.svg)](https://github.com/guanguans/laravel-exception-notify/actions/workflows/php-cs-fixer.yml)\n[![codecov](https://codecov.io/gh/guanguans/laravel-exception-notify/branch/main/graph/badge.svg?token=URGFAWS6S4)](https://codecov.io/gh/guanguans/laravel-exception-notify)\n[![Latest Stable Version](https://poser.pugx.org/guanguans/laravel-exception-notify/v)](https://packagist.org/packages/guanguans/laravel-exception-notify)\n[![GitHub release (with filter)](https://img.shields.io/github/v/release/guanguans/laravel-exception-notify)](https://github.com/guanguans/laravel-exception-notify/releases)\n[![Total Downloads](https://poser.pugx.org/guanguans/laravel-exception-notify/downloads)](https://packagist.org/packages/guanguans/laravel-exception-notify)\n[![License](https://poser.pugx.org/guanguans/laravel-exception-notify/license)](https://packagist.org/packages/guanguans/laravel-exception-notify)\n\n## Why?\n\nWhen an exception occurs, we want to be notified immediately, so that we can fix the problem as soon as possible.\nThis package provides a simple and flexible way to monitor exceptions and report them to the notification channels.\n\n## Related repositories\n\n* [https://github.com/guanguans/notify](https://github.com/guanguans/notify)\n* [https://github.com/guanguans/yii-log-target](https://github.com/guanguans/yii-log-target)\n\n## Requirement\n\n* PHP \u003e= 8.2\n\n## Installation\n\n```shell\ncomposer require guanguans/laravel-exception-notify --ansi -v\n```\n\n## Configuration\n\n### Publish files(optional)\n\n```shell\nphp artisan vendor:publish --provider=\"Guanguans\\\\LaravelExceptionNotify\\\\ExceptionNotifyServiceProvider\" --ansi -v\n```\n\n### Apply for channel authentication information\n\n* [Notify(30+)](https://github.com/guanguans/notify)\n* Log\n* Mail\n* Stack\n\n### Configure channels in the `config/exception-notify.php` and `.env` file\n\n```dotenv\n#EXCEPTION_NOTIFY_CHANNEL=stack\nEXCEPTION_NOTIFY_STACK_CHANNELS=log,mail,slack\nEXCEPTION_NOTIFY_MAIL_TO_ADDRESS=developer1@example.mail,developer2@example.mail\nEXCEPTION_NOTIFY_SLACK_WEBHOOK=https://hooks.slack.com/services/TPU9A9/B038KNUC0GY/6pKH3vfa3mjlUPcgLSjzR\n```\n\n## Usage\n\n### Test whether exception can be monitored and reported to notification channel\n\n```shell\nphp artisan exception-notify:test --channel=log --job-connection=sync\nphp artisan exception-notify:test\nphp artisan exception-notify:test -v\n```\n\n### :camera_flash: Notification examples\n\n\u003cdetails\u003e\n\u003csummary\u003e:monocle_face: details\u003c/summary\u003e\n\n|           discord            |          slack           |            telegram            |\n|:----------------------------:|:------------------------:|:------------------------------:|\n| ![discord](docs/discord.jpg) | ![slack](docs/slack.jpg) | ![telegram](docs/telegram.jpg) |\n|             lark             |           mail           |             weWork             |\n|    ![lark](docs/lark.jpg)    |  ![mail](docs/mail.jpg)  |   ![weWork](docs/weWork.jpg)   |\n\u003c/details\u003e\n\n### Skip report\n\n\u003cdetails\u003e\n\u003csummary\u003ebootstrap/app.php\u003c/summary\u003e\n\n```php\n\u003c?php\n\nuse Illuminate\\Foundation\\Application;\nuse Illuminate\\Foundation\\Configuration\\Exceptions;\n\nreturn Application::configure(basePath: \\dirname(__DIR__))\n    -\u003ewithExceptions(static function (Exceptions $exceptions): void {\n        $exceptions\n            // -\u003edontReportWhen(static fn (Throwable $throwable) =\u003e collect([\n            //     \\Symfony\\Component\\HttpKernel\\Exception\\HttpException::class,\n            //     \\Illuminate\\Http\\Exceptions\\HttpResponseException::class,\n            // ])-\u003econtains(static fn (string $exception): bool =\u003e $throwable instanceof $exception))\n            -\u003edontReport([\n                \\Symfony\\Component\\HttpKernel\\Exception\\HttpException::class,\n                \\Illuminate\\Http\\Exceptions\\HttpResponseException::class,\n            ]);\n    })-\u003ecreate();\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eOr app/Providers/AppServiceProvider.php\u003c/summary\u003e\n\n```php\n\u003c?php\n\nuse Guanguans\\LaravelExceptionNotify\\Facades\\ExceptionNotify;\n\npublic function boot(): void\n{\n    ExceptionNotify::skipWhen(static fn (\\Throwable $throwable) =\u003e collect([\n        \\Symfony\\Component\\HttpKernel\\Exception\\HttpException::class,\n        \\Illuminate\\Http\\Exceptions\\HttpResponseException::class,\n    ])-\u003econtains(static fn (string $exception): bool =\u003e $throwable instanceof $exception));\n}\n```\n\u003c/details\u003e\n\n### Extend channel\n\n\u003cdetails\u003e\n\u003csummary\u003eapp/Providers/AppServiceProvider.php\u003c/summary\u003e\n\n```php\n\u003c?php\n\nuse Guanguans\\LaravelExceptionNotify\\Contracts\\ChannelContract;\nuse Guanguans\\LaravelExceptionNotify\\Facades\\ExceptionNotify;\nuse Illuminate\\Container\\Container;\n\npublic function boot(): void\n{\n    ExceptionNotify::extend('YourChannelName', function (Container $container): ChannelContract {\n        return 'Instance of the `Guanguans\\LaravelExceptionNotify\\Contracts\\ChannelContract`.';\n    });\n}\n```\n\u003c/details\u003e\n\n## Composer scripts\n\n```shell\ncomposer checks:required\ncomposer php-cs-fixer:fix\ncomposer test\n```\n\n## Changelog\n\nPlease see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.\n\n## Contributing\n\nPlease see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.\n\n## Security Vulnerabilities\n\nPlease review [our security policy](../../security/policy) on how to report security vulnerabilities.\n\n## Credits\n\n* [guanguans](https://github.com/guanguans)\n* [All Contributors](../../contributors)\n\n## Thanks\n\n[![](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg)](https://www.jetbrains.com/?from=https://github.com/guanguans)\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguanguans%2Flaravel-exception-notify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguanguans%2Flaravel-exception-notify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguanguans%2Flaravel-exception-notify/lists"}