anlutro/l4-smart-errors

Laravel 的智能错误报告。

2.5.1 2017-06-04 15:27 UTC

README

Build Status Latest Stable Version Latest Unstable Version License

一个小系统,在向自己发送包含异常所有相关信息(引用者、路由名称/操作、任何输入等)的电子邮件时,向您的最终用户显示一个非常通用的错误消息。

Example email

  • 未捕获的异常会发送包含详细信息的电子邮件(引用者、路由名称/操作、任何输入等)
  • 404 错误以警告形式写入日志,包括访问的 URL 和引用者
  • 自 1.3 版本起,警报级别的日志事件会通过电子邮件发送

注意:不支持 Laravel 5。请参阅 此问题

安装

要安装,运行 composer require anlutro/l4-smart-errors。这将选择最合适的版本并将其添加到您的 composer.json

重要:从 2.1 升级

2.2 中的行为有所改变,并且略有向后不兼容。如果配置文件中的 'error-view' 或 'missing-view' 设置为 null,则错误/404 处理程序不会返回任何视图响应。这是为了让用户添加自己的 App::error / App::missing 处理程序,这些处理程序返回带有自定义数据的视图,而不是被迫使用视图组合器,如果您想使用需要定义特定变量的自定义视图。

要保留 2.1 中的行为,请确保配置文件已发布,然后更改您的 config.php 文件以包含以下行

'error-view' => 'smarterror::generic',
'missing-view' => 'smarterror::missing',

用法

下载包后,将以下内容添加到 app/config/app.php 中的服务提供者列表中

'anlutro\L4SmartErrors\L4SmartErrorsServiceProvider',

运行 php artisan config:publish anlutro/l4-smart-errors 并打开生成的配置文件。根据需要修改它。如果您想使用某些模板,请从 vendor 目录复制 lang 和/或 views 目录。

删除您应用程序中可能存在的任何 App::errorApp::missing,以防止冲突。如果您想自己处理特定类型的异常,您可以添加具有这些特定异常作为参数的 App::error 闭包。使用 App::error 处理的异常将不会通过此包发送电子邮件或记录。

异常电子邮件报告

只要 app.debug 为假,并且包配置文件中的 dev-email 键已填写,异常就会通过电子邮件发送。请确保您的 mail.php 配置文件正确无误 - 使用常规的 Mail::send() 进行测试。如果您的邮件发送器配置不正确,您可能会在错误时收到一个空的“错误处理程序中的错误”屏幕。

电子邮件报告已进行节流,以确保相同的异常不会重复发送。默认情况下,当相同的异常再次发送电子邮件的阈值是 10 分钟。这可以通过 throttle-age 配置键进行配置。

注意,当 app.debug 为真时,不会发送电子邮件。

最终用户响应

对于任何未捕获/未处理的异常,如果 app.debug 为假,则包将向最终用户返回一个通用的错误响应。如果您在开发过程中收到此通用响应,则可能没有设置正确的环境 - 检查您的 bootstrap/start.php

您可以通过配置 error-viewmissing-viewcsrf-view 选项来设置显示哪种视图。如果您将这些值设置为 null,则包将不会向最终用户返回通用响应,从而允许您实现自己的,例如本示例所示。

// app/start/global.php
App::pushError(function($exception) {
    if (App::runningInConsole() || Config::get('app.debug')) return;
    return Response::view('my-error-view', [...], 500);
});

使用 pushError 而不是 error 可以确保它被推送到异常处理程序堆栈的末尾,使包的错误处理程序优先于您的处理程序。

本地化响应

此存储库的语言和翻译更新得并不规律。为确保您的翻译始终保持最新,或者如果您想自行管理翻译,请运行以下命令。

mkdir -p ./app/lang/packages/MYLOCALE/smarterror`
cp ./vendor/anlutro/laravel-4-smart-errors/src/lang/en/*.php ./app/lang/packages/MYLOCALE/smarterror

您也可以从除 "en" 之外的其他区域复制。

如果您的区域设置缺失,您的通用最终用户响应将只有占位符字符串。您可以通过将 'fallback_locale' => 'en', 放入 app/config/app.php 中将其默认设置为英文。

贡献

我会立即接受语言文件,无需讨论。对于其他任何内容,请在您的 pull requests 中描述清楚。

联系

如果您有任何问题或建议,请打开 GitHub 上的一个问题。

许可

此存储库的内容在 MIT 许可证 下发布。