vikasrinvi / laravel-bug-watcher
当发生错误时发送邮件
Requires (Dev)
- orchestra/testbench: dev-develop
- pestphp/pest: 2.x-dev
README
该包是为开发者制作的。当应用程序中出现任何错误时,它会通过电子邮件发送错误消息,并在clickup中创建一个任务。
功能
- 发送包含错误详细信息的电子邮件。
- 在clickUp中创建包含错误报告的任务
未来范围
- 可以与ChatGPT等AI集成,以提供最佳的错误解决方案。
- 我们可以存储错误日志,并通过一些路由创建用户界面,以便跟踪系统中的所有之前的错误。
要求
- PHP >= 8.1
- Laravel >= 9.0
安装
运行以下命令
composer require vikasrinvi/laravel-bug-watcher
在更新composer后,将服务提供者添加到config/app.php中的providers数组
您可以选择跳过向config/app.php添加提供者,因为它将自动发现
Vikasrinvi\LaravelBugWatcher\LaravelBugWatcherServiceProvider::class,
然后在app/Exceptions/Handler.php中替换
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
为
use Vikasrinvi\LaravelBugWatcher\ErrorHandler as ExceptionHandler;
配置
要发布配置文件
php artisan vendor:publish --provider="Vikasrinvi\LaravelBugWatcher\LaravelBugWatcherServiceProvider" --tag="config"
这将在config/laravel-bug-watcher.php中为您创建一个配置文件
默认配置
'ErrorEmail' => [ 'email' => true, 'dontEmail' => [], 'throttle' => true, 'throttleCacheDriver' => env('CACHE_DRIVER', 'file'), 'throttleDurationMinutes' => 5, 'dontThrottle' => [], 'globalThrottle' => true, 'globalThrottleLimit' => 20, 'globalThrottleDurationMinutes' => 30, 'toEmailAddress' => null, 'fromEmailAddress' => null, 'emailSubject' => config('app.name'). " :- Error Occured " ], 'ClickUp' =>[ 'createTask' => true, 'token' => env('CLICKUP_ACCESS_TOKEN', null), 'team_name' => env('CLICKUP_TEAM_NAME', null), 'folder_name' =>env('CLICKUP_FOlDER_NAME', null), 'folder_id' => env('CLICKUP_FOlDER_ID', null), 'list_name' => env('CLICKUP_LIST_NAME', null), 'list_id' => env('CLICKUP_LIST_ID', null) ]
基本用法
clickup任务的基本配置
- createTask (bool) - 启用或禁用在clickup中创建任务。
- token (string) - 来自clickup的令牌
- 团队名称 (string) - 团队名称是创建项目的团队,我们需要从click中获取它,它也是工作区名称
- 文件夹名称 (string) - 这是clickup中的项目名称
- 列表名称 - 这是clickup中任务的父任务,任务将在其下创建 重要:列表下应该有一个名为'BACKLOG'的状态,并创建一个名为'bug'的标签
电子邮件的基本配置
-
email (bool) - 启用或禁用错误/异常的电子邮件发送
-
dontEmail (array) - 它与laravel的$dontReport变量完全一样,在此处文档化:https://laravel.net.cn/docs/10.x/errors]#the-exception-handler 在按类型忽略异常下。请注意,任何在laravel的$dontReport下的异常也不会被电子邮件发送
-
throttle (bool) - 启用或禁用异常电子邮件的节流。只有确定已经通过检查缓存发送了完全相同的异常/错误时,才会执行节流。错误/异常通过异常类 + 异常消息 + 异常代码来确定是否唯一
-
throttleCacheDriver (string) - 用于节流的缓存驱动程序,默认情况下它使用env文件中的CACHE_DRIVER
-
throttleDurationMinutes (int) - 节流持续时间(分钟),例如,如果您将其设置为5,并且BadMethodCallException触发了电子邮件,则如果再次抛出相同的异常,则直到5分钟过后才不会发送电子邮件
-
dontThrottle (array) - 这与dontEmail相同,除了提供您希望永远不节流(即使启用了节流)的异常列表之外
-
globalThrottle (bool) - 启用或禁用是否希望全局节流此应用程序收到的所有异常类型的电子邮件数量
-
globalThrottleLimit (int) - 在特定时间段内您希望接收的最大邮件数量。
-
throttleDurationMinutes (int) - 全局限制的持续时间(分钟),例如,如果您设置为30,并且全局限制为10,则在发送第一封邮件后,一旦达到10封邮件的阈值,将启动30分钟的计时器。在此30分钟期间,将不会发送更多邮件。
-
toEmailAddress (string|array) - 要发送异常邮件的邮箱地址,例如开发团队 dev@yoursite.com
-
fromEmailAddress (string) - 应该发送这些邮件的邮箱地址,例如 noreply@yoursite.com。
-
emailSubject (string) - 邮件主题,留空则使用默认主题:Error Occured config('app.name', 'unknown').' ('.config('app.env', 'unknown').')
注意:来自 app/Exceptions/Handler.php 文件的 dontReport 变量也不会通过邮件发送,因为假设如果它们不够重要以至于不记录日志,那么它们也不够重要以至于通过邮件发送。
重要:您必须填写 toEmailAddress 和 fromEmailAddress,否则您将无法接收邮件。
高级使用
更改视图
如果您使用以下命令发布了您的视图,您可以通过修改 resources/views/vendor/laravel-bug-watcher/emailException.blade.php 中的视图来更改异常邮件的外观
php artisan vendor:publish --provider="php artisan vendor:publish --provider="Vikasrinvi\LaravelBugWatcher\LaravelBugWatcherServiceProvider" --tag="views"
重要提示
请确保您已在 env 中配置了 Mail 设置,以便可以发送邮件
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your-user-string
MAIL_PASSWORD=your-password-string
MAIL_ENCRYPTION=null