creativedeveloper/email_error

来自您的laravel应用程序的邮件异常

dev-master 2019-10-09 10:25 UTC

This package is auto-updated.

Last update: 2024-09-09 20:53:44 UTC


README

License

Laravel 5 错误邮件报告包旨在为开发者提供一种简单的方式,在应用程序抛出异常时向自己发送调试信息。默认提供的信息包括:

  • 环境
  • 异常/错误URL
  • 异常/错误类
  • 异常/错误消息
  • 异常/错误代码
  • 文件和行号
  • 堆栈跟踪

目录

安装

您可以使用 composer 将此插件安装到您的laravel 5.x 应用程序中。

运行以下命令

composer require creativedeveloper/laravel-email-exceptions

更新composer后,将服务提供者添加到config/app.php中的providers数组中

如果您使用laravel >= 5.5,可以跳过将提供者添加到config/app.php中,因为它将自动发现

Creativedeveloper\LaravelEmailExceptions\EmailExceptionsServiceProvider::class,

然后在app/Exceptions/Handler.php中替换

use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;

use Creativedeveloper\LaravelEmailExceptions\Exceptions\EmailHandler as ExceptionHandler;

配置

要发布配置文件和视图,请运行以下命令

php artisan vendor:publish --provider="Creativedeveloper\LaravelEmailExceptions\EmailExceptionsServiceProvider"

这将为您在config/laravelEmailExceptions.php中创建一个配置文件,并在resources/views/vendor/laravelEmailExceptions/emailExceptions.blade.php中创建一个视图

默认配置

'ErrorEmail' => [
    'email' => true,
    'dontEmail' => [],
    'throttle' => false,
    'throttleCacheDriver' => env('CACHE_DRIVER', 'file'),
    'throttleDurationMinutes' => 5,
    'dontThrottle' => [],
    'globalThrottle' => true,
    'globalThrottleLimit' => 20,
    'globalThrottleDurationMinutes' => 30,
    'toEmailAddress' => null,
    'fromEmailAddress' => null,
    'emailSubject' => null
]
  • email (bool) - 启用或禁用错误/异常的邮件发送
  • dontEmail (array) - 这与laravel的$dontReport变量完全一样,在此处文档说明:[https://laravel.net.cn/docs/5.4/errors#the-exception-handler](https://laravel.net.cn/docs/5.4/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,并且globalThrottleLimit为10,当第一封邮件发送出去时,一旦达到10封邮件的阈值,30分钟的计时器将启动,在此期间不再发送任何邮件
  • toEmailAddress (string|array) - 要发送异常邮件的电子邮件地址,例如,开发团队 dev@yoursite.com
  • fromEmailAddress (string) - 应从哪个电子邮件地址发送这些邮件,例如 noreply@yoursite.com
  • emailSubject (字符串) - 电子邮件的主题,留空则使用默认主题:在APP_URL APP_ENV上抛出异常

注意:来自 app/Exceptions/Handler.php 文件的 dontReport 变量也不会通过电子邮件发送,因为这假设如果它们不够重要到需要记录,那么它们也不够重要到需要通过电子邮件发送

重要:您必须填写 toEmailAddress 和 fromEmailAddress,否则您将不会收到电子邮件。

基本用法

基本配置

更新您的配置值在 config/laravelEmailExceptions.php

'ErrorEmail' => [
    'email' => true,
    'dontEmail' => [],
    'throttle' => true,
    'throttleCacheDriver' => env('CACHE_DRIVER', 'file'),
    'throttleDurationMinutes' => 5,
    'dontThrottle' => [],
    'globalThrottle' => true,
    'globalThrottleLimit' => 20,
    'globalThrottleDurationMinutes' => 30,
    'toEmailAddress' => 'dev@yoursite.com',
    'fromEmailAddress' => 'noreply@yoursite.com',
    'emailSubject' => null,
]

节流

为了防止发送给开发团队的垃圾邮件,已经实现了速率限制和全局速率限制。速率限制通过创建一个唯一的缓存键来实现,该键由异常类+异常消息+异常代码组成。它的目的是防止重复的异常通过电子邮件报告,从而给团队时间在它们再次报告之前修复它们。

全局节流

全局速率限制是一个类似的想法,但它被放置在以防止在一定时间内发送超出特定数量的电子邮件。这通常只适用于应用程序级别的故障,例如网站的主要部分关闭,因此来自各个方向的异常类型很多。

高级用法

更改视图

如果您使用上述命令发布了视图,您将能够通过修改 resources/views/vendor/laravelEmailExceptions/emailException.blade.php 中的视图来更改异常电子邮件的外观。

添加任意不发送邮件逻辑

如果您需要更复杂的逻辑,而不仅仅是检查 thrown exception 的 instanceof,那么有一个方便的钩子可以添加任意逻辑以决定是否应该通过电子邮件发送异常。

app/Exceptions/Handler.php 中实现 appSpecificDontEmail(Exception $exception) 函数。

<?php
class Handler extends ExceptionHandler
{
    protected function appSpecificDontEmail(Exception $exception)
    {
        // add logic here to determine if exception should be emailed return true
        // if it should and return false if it should not
    }
}

注意事项

如果您在使用此功能时遇到困难,请首先确保您已正确配置了应用程序的邮件发送。启动邮件发送的最简单方法之一是在 mailtrap.io 上注册一个免费账户。完成此操作后,您必须更新 .env 文件,并使用以下值替换您的演示收件箱中的用户名和密码。

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your-user-string
MAIL_PASSWORD=your-password-string
MAIL_ENCRYPTION=null

错误和反馈

http://github.com/creativedeveloper1881/email_report/issues

许可证

版权所有 (c) 2017 Creative Developer

特此授予任何人获取本软件及其相关文档文件(“软件”)副本的权利,免费使用软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向提供软件的人做同样的事情,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和非侵权性保证。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他方式,无论源于、因之或与此软件或其使用或其他交易有关。