jonatanmdez / php-error-handlers
PHP 库,包含对流行错误处理服务的封装
Requires
- php: >=5.5
- airbrake/phpbrake: ^0.0.11
- bugsnag/bugsnag: 2.*
- cakephp/cakephp: ~3.0
- mindscape/raygun4php: ^1.6
- monolog/monolog: ^1.17
- raven/raven: ^0.13.0
Requires (Dev)
- cakephp/cakephp-codesniffer: dev-master
- phpunit/phpunit: 4.1.*
- satooshi/php-coveralls: dev-master
This package is not auto-updated.
Last update: 2024-09-29 01:19:07 UTC
README
错误处理器
包含对流行错误处理服务的封装的包。
包含 CakePHP 3 的集成库。
需求
- PHP 5.5+
- 耐心
安装
# install it composer require josegonzalez/php-error-handlers # load it bin/cake plugin load Josegonzalez/ErrorHandlers
使用
您可以将 Handler
类注册为 PHP 错误和异常的处理程序。
// Create an array of configuration data to pass to the handler class $config = [ 'handlers' => [ // *Can* be the class name, not-namespaced // The namespace will be "interpolated" in such cases 'NewrelicHandler' => [ ], // Can also include the full namespace 'Josegonzalez\ErrorHandlers\Handler\BugsnagHandler' => [ 'apiKey' => 'YOUR_API_KEY_HERE' ], // Invalid handlers will be ignored 'InvalidHandler' => [ ], ], ]; // Register the error handler (new \Josegonzalez\ErrorHandlers\Handler($config))->register(); // Enjoy throwing exceptions and reporting them upstream throw new \Exception('Test Exception');
默认情况下,已注册的处理程序返回 false。这允许您链式调用错误处理程序,以便此包可以处理报告,而另一个库可以显示友好的错误消息。
可用处理程序
以下为内置处理程序及其配置选项
AirbrakeHandler
:使用官方 airbrake php 包。host
:(可选 | 默认:api.airbrake.io
)projectId
:(必需 | 默认:null
)projectKey
:(必需 | 默认:null
)
BugsnagHandler
:使用官方 bugsnag php 包。apiKey
:(必需 | 默认:null
)
MonologStreamHandler
:使用 monolog StreamHandler。name
:(可选 | 默认:error
)handlerClass
:(可选 | 默认:Monolog\Handler\StreamHandler
)stream
:(可选 | 默认:log/error.log
)level
:(可选 | 默认:Monolog\Logger::Warning
)
NewrelicHandler
:使用newrelic
php 扩展。RaygunHandler
:使用官方 raygun php 包。apiKey
:(必需 | 默认:null
)
SentryHandler
:使用官方 sentry raven php 包。dsn
:(必需 | 默认:null
)release
:(可选 | 默认:null
)
处理程序和异常修改
修改客户端处理程序
有时修改客户端可能会有用。例如,可能需要向给定的客户端调用添加上下文信息。为此,您可以设置 clientCallback
配置键
$config = [ 'handlers' => [ 'BugsnagHandler' => [ 'clientCallback' => function ($client) { // do something interesting to the client $client->setAppVersion('1.0.0'); return $client; }, ], ], ];
请注意,客户端仍应响应上游库提供的现有报告 API。如果需要,您可以返回代理库,但返回初始客户端是理想的。
在
clientCallback
中,如果处理程序配置不正确,则$client
可能会被设置为null
。
修改异常
如果需要,可以修改特定处理程序中使用的异常。对异常的更改将仅在特定处理程序调用期间持续。
为此,为特定处理程序设置 exceptionCallback
配置键
$config = [ 'handlers' => [ 'BugsnagHandler' => [ 'exceptionCallback' => function ($exception) { // return null to skip reporting errors if ($exception instanceof \Error) { return null; } return $exception; }, ], ], ];
您可以返回另一个异常或 null
。在后一种情况下,内置处理程序将跳过报告给定的异常。
自定义处理程序
每个处理程序应实现 Josegonzalez\ErrorHandlers\Handler\HandlerInterface
接口。此接口包含一个方法
public function handle($exception);
- PHP 5.x 错误将在发送到
handle
方法之前替换为包装的ErrorException
实例。 - PHP 7.x 中的扩展
Throwable
错误将在发送到handle
方法之前被替换为包装类Josegonzalez\ErrorHandlers\Exception\PHP7ErrorException
的实例。 - PHP 致命错误将在发送到
handle
方法之前被替换为包装类Josegonzalez\ErrorHandlers\Exception\FatalErrorException
的实例。 - PHP 异常将保持未修改的状态发送。
自定义处理器应该扩展提供的 Josegonzalez\ErrorHandlers\Handler\AbstractHandler
类。这使它们能够通过提供的 ConfigTrait
接收配置,并自定义 __construct()
。
CakePHP 使用方法
您需要在您的 config/app.php
中设置至少以下配置键
Error.config
:接受与正常 PHP 使用相同的配置数组。
接下来,在您的 config/bootstrap.php
中配置提供的 ErrorHandler 类
// around line 100 $isCli = PHP_SAPI === 'cli'; if ($isCli) { (new \Josegonzalez\ErrorHandlers\Cake\ConsoleErrorHandler(Configure::read('Error')))->register(); } else { (new \Josegonzalez\ErrorHandlers\Cake\ErrorHandler(Configure::read('Error')))->register(); }
运行测试
是的,测试需要 CakePHP。欢迎提交拉取请求!
许可证
MIT 许可证 (MIT)
版权所有 © 2015 Jose Diaz-Gonzalez
特此授予任何获得此软件及其相关文档文件(以下简称“软件”)副本的人免费使用权,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许向软件提供者提供软件的人这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和无侵权性的保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论此类责任是基于合同、侵权或其他法律行为,是否由软件或其使用或其他方式引起。