darshan / exceptionemail
当Laravel应用程序服务器上发生异常时,发送带堆栈跟踪的电子邮件的简单方法。
Requires
- php: >=7.4 || ^8.0
- illuminate/config: 8.*|9.*|10.*|11.*
- illuminate/console: 8.*|9.*|10.*|11.*
- illuminate/log: 8.*|9.*|10.*|11.*
- illuminate/mail: 8.*|9.*|10.*|11.*
- illuminate/queue: 8.*|9.*|10.*|11.*
- illuminate/support: 8.*|9.*|10.*|11.*
- illuminate/view: 8.*|9.*|10.*|11.*
- symfony/error-handler: ~5.1|~6.0|~7.0
README
当您的Laravel应用程序中发生异常时,发送带堆栈跟踪的电子邮件通知的易于使用的包。
安装指南
1. 使用Composer安装
要安装此包,请运行以下Composer命令
composer require darshan/exceptionemail
2. 配置Laravel
Laravel 11的重大更改:自定义服务提供商中的异常处理
在Laravel 11中,异常处理逻辑应放置在自定义服务提供商中。按照以下步骤进行设置
- 创建自定义服务提供商
创建一个将处理您应用程序中异常的新服务提供商。在 app/Providers/ExceptionServiceProvider.php
中添加以下代码
namespace App\Providers; use Illuminate\Support\ServiceProvider; use Throwable; class ExceptionServiceProvider extends ServiceProvider { public function register() { // Nothing here for now. } public function boot() { app()->error(function (Throwable $e) { app('exceptionemail')->captureException($e); }); } }
- 注册服务提供商
在 bootstrap/providers.php
中,通过将其添加到 providers
数组中,注册您的自定义 ExceptionServiceProvider
return [ // Other service providers... App\Providers\ExceptionServiceProvider::class, ],
为Laravel版本低于11(如8、9、10)的ExceptionEmail添加异常捕获
为了捕获异常并发送电子邮件(对于Laravel版本低于11或如果您喜欢使用 Handler.php
),请修改您的 app/Exceptions/Handler.php
文件中的 report
方法
use Throwable; public function report(Throwable $exception) { app('exceptionemail')->captureException($exception); parent::report($exception); }
3. 发布配置文件
通过运行以下Artisan命令发布ExceptionEmail配置文件
php artisan vendor:publish --provider="Webmonks\ExceptionEmail\ExceptionEmailServiceProvider"
这将在 config/exceptionemail.php
中创建一个配置文件。
配置
静默模式
默认情况下,该包配置为 'silent' => true
,以防止在开发环境中发送异常电子邮件,特别是在Laravel中启用 'debug' => true
时。
您可以使用以下配置选项来控制此行为
'silent' => env('IS_EXCEPTION_EMAIL_SILENT', true),
要启用异常发生时的电子邮件通知,请在 .env
文件中设置 IS_EXCEPTION_EMAIL_SILENT=false
。
捕获异常
您可以选择哪些类型的异常应触发电子邮件通知。默认情况下,该包包括 Symfony\Component\Debug\Exception\FatalErrorException::class
。
'capture' => [ Symfony\Component\Debug\Exception\FatalErrorException::class, ],
要捕获所有异常,您可以使用通配符 '*'
'capture' => [ '*' ],
忽略异常
您可能需要定义不应触发电子邮件通知的异常。这是通过将它们添加到 ignored_exception
数组中完成的。
'ignored_exception' => [ // Webmonks\ExceptionEmail\Exceptions\DummyException::class, ],
例如,要忽略 FatalErrorException
,请使用以下内容
'ignored_exception' => [ Symfony\Component\Debug\Exception\FatalErrorException::class, ],
在 Handler.php
中的使用
更新 app/Exceptions/Handler.php
中的 report
方法以包含忽略的异常
public function report(Exception $exception) { if ($this->shouldReport($exception)) { app('exceptionemail')->captureException($exception); } parent::report($exception); }
收件人
通过更新 to
数组指定应接收异常通知的电子邮件地址
'to' => [ 'hello@example.com', ],
忽略机器人
您可以将包配置为忽略由机器人触发的错误,例如搜索引擎爬虫。默认配置包括常见的机器人,如
'ignored_bots' => [ 'googlebot', 'bingbot', 'slurp', 'ia_archiver', ],
自定义电子邮件
要自定义错误通知电子邮件的主题和正文,请运行以下命令发布电子邮件模板
php artisan vendor:publish --provider="Webmonks\ExceptionEmail\ExceptionEmailServiceProvider"
注意: 只运行此命令一次,以避免覆盖自定义更改。
电子邮件视图将发布到 resources/views/vendor/exceptionemail
。您可以根据需要修改模板,并且在视图中可以访问 $exception
对象。
测试集成
要验证ExceptionEmail是否正确设置并正常工作,请使用以下Artisan命令
php artisan exceptionemail:test
此命令将抛出 Webmonks\ExceptionEmail\Exceptions\DummyException
,并且该包将捕获并将其作为电子邮件发送。如果一切设置正确,您应该会收到测试电子邮件。
安全
如果您发现任何安全问题,请直接通过电子邮件与我们联系,邮箱地址为 damku999@gmail.com,而不是在GitHub上创建问题。
鸣谢
关于Webmonks
Webmonks 是一家位于印度艾哈迈达巴德的初创产品开发公司。您可以在 GitHub 上探索我们所有的开源项目。
许可证
此软件包是开源软件,许可协议为 MIT 许可证。