darshan/exceptionemail

当Laravel应用程序服务器上发生异常时,发送带堆栈跟踪的电子邮件的简单方法。

This package is auto-updated.

Last update: 2024-09-10 18:08:31 UTC


README

当您的Laravel应用程序中发生异常时,发送带堆栈跟踪的电子邮件通知的易于使用的包。

exceptionemail example image

安装指南

1. 使用Composer安装

要安装此包,请运行以下Composer命令

composer require darshan/exceptionemail

2. 配置Laravel

Laravel 11的重大更改:自定义服务提供商中的异常处理

在Laravel 11中,异常处理逻辑应放置在自定义服务提供商中。按照以下步骤进行设置

  1. 创建自定义服务提供商

创建一个将处理您应用程序中异常的新服务提供商。在 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);
        });
    }
}
  1. 注册服务提供商

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 许可证