bookoforigin / slashtrace
SlashTrace - 优秀的错误处理器
Requires
- php: >= 7.2
- league/climate: ^3.2
- league/plates: ^3.3
- symfony/var-dumper: 4.4.47
Requires (Dev)
- phpunit/phpunit: ^6.0
This package is auto-updated.
Last update: 2024-09-29 21:29:20 UTC
README
更新版本以使 slash trace 能够与 PHP 8+ 一起工作
SlashTrace 的核心是一个错误和异常处理器。您可以将它挂钩到您的错误处理程序中(或者让它自行设置以捕获所有错误和异常),然后它会捕获并显示有关错误的大量有用信息。它适用于常规浏览器请求,也适用于 AJAX、CLI 和 JSON APIs。
完成本地调试后,您可以配置 SlashTrace 将错误发送到专门的错误报告服务,如 Sentry、Raygun 和 Bugsnag。
用法
-
使用 Composer 安装
composer require bookoforigin/slashtrace
-
捕获错误
use SlashTrace\SlashTrace; use SlashTrace\EventHandler\DebugHandler; $slashtrace = new SlashTrace(); $slashtrace->addHandler(new DebugHandler()); // Register the error and exception handlers $slashtrace->register();
或者,您也可以显式处理异常
try { // Your code } catch (Exception $exception) { $slashtrace->handleException($exception); }
处理器
SlashTrace 随附上面示例中使用的 DebugHandler,但您通常希望在生产环境中将其设置成将错误发送到错误跟踪服务。目前,已为以下提供者实现了处理器,并且还有更多即将推出。点击每个链接查看用法文档
捕获其他数据
除了 SlashTrace 默认捕获的复杂错误信息外,您还可以将其他类型的数据附加到每个报告中。当使用上述外部处理器时,这特别有用。
这样,SlashTrace 在您和这些提供者之间充当了一个抽象层,并将您提供的数据规范化为单一格式。这有助于您避免供应商锁定,并让您可以通过切换处理器来简单地切换错误报告提供者。
捕获用户数据
如果您想附加有关受影响用户的信息,可以像这样操作
use SlashTrace\Context\User; $user = new User(); $user->setId(12345); $user->setEmail('pfry@planetexpress.com'); $user->setName('Philip J. Fry'); $slashtrace->addUser($user);
请注意,用户至少需要一个 ID 或电子邮件。名称完全是可选的。
此功能对应于每个错误跟踪器中的相应实现
记录痕迹
有时堆栈跟踪不足以确定导致错误的一系列步骤。为此,SlashTrace 允许您在执行期间记录痕迹
$slashtrace->recordBreadcrumb("Router loaded"); $slashtrace->recordBreadcrumb("Matched route", [ "controller" => "orders", "action" => "confirm", ]);
相关跟踪器文档
- Sentry - PHP 中的痕迹
- Raygun - 当前的 PHP SDK 不支持痕迹
- Bugsnag - 记录痕迹
跟踪版本
通常,了解哪个版本引入了特定错误或哪个版本触发了回归很有用。用特定版本或版本号标记事件非常简单
$slashtrace->setRelease("1.0.0"); // <- Your version number, commit hash, etc.
跟踪器文档
- Sentry - 版本
- Raygun - 版本号
- Bugsnag - 无法显式为每个事件设置发布版本。请参阅 Bugsnag 文档 获取更多详细信息。
调试渲染器
当您使用捆绑的调试处理器时,它会尝试根据其运行的环境选择适当的输出渲染器,如下所示
- 当
php_sapi_name() === "cli"
时,使用 命令行界面渲染器。请参阅 示例输出。 - 用于 AJAX 请求(带有
X-Requested-With: XMLHttpRequest
标头的请求)的 纯文本渲染器。请参阅 示例输出。 - 用于带有
Accept: application/json
标头的请求的 JSON 渲染器。如果同时存在这两个头,它将优先于文本渲染器。请参阅 示例输出。 - 用于所有其他请求的 网页渲染器。请参阅 示例输出。
或者,您可以强制调试处理程序使用特定的渲染器
use SlashTrace\EventHandler\DebugHandler; use SlashTrace\DebugRenderer\DebugJsonRenderer; $handler = new DebugHandler(); $handler->setRenderer(new DebugJsonRenderer()); $slashtrace->addHandler($handler);