airbrake/phpbrake
Composer 安装命令:
composer require airbrake/phpbrake
包简介
Airbrake exception and error notifier for PHP
README 文档
README
PHPBrake
Features
PHPBrake is the official Airbrake PHP error notifier. PHPBrake supports PHP 8.2 and higher. PHPBrake includes many useful features that give you control over when and what you send to Airbrake, you can:
- Send notices from try-catch blocks in your code
- Add custom data to a notice
- Filter sensitive data from the notice
- Ignore specific exceptions
- Configure an error handler to capture uncaught exceptions
- Integrate with monolog
- Integrate with Laravel
- Integrate with CakePHP 3.x
- Integrate with Symfony
- Integrate with Zend
- and more
Installation
composer require airbrake/phpbrake
Quickstart
// Create new Notifier instance. $notifier = new Airbrake\Notifier([ 'projectId' => 12345, // FIX ME 'projectKey' => 'abcdefg' // FIX ME ]); // Set global notifier instance. Airbrake\Instance::set($notifier); // Register error and exception handlers. $handler = new Airbrake\ErrorHandler($notifier); $handler->register(); // Somewhere in the app... try { throw new Exception('hello from phpbrake'); } catch(Exception $e) { Airbrake\Instance::notify($e); }
API
Notifier API consists of 4 methods:
buildNotice- builds Airbrake notice.sendNotice- sends notice to Airbrake.notify- shortcut forbuildNoticeandsendNotice.addFilter- adds filter that can modify and/or filter notices.
Adding custom data to the notice
$notifier->addFilter(function ($notice) { $notice['context']['environment'] = 'production'; return $notice; });
Filtering sensitive data from the notice
$notifier->addFilter(function ($notice) { if (isset($notice['params']['password'])) { $notice['params']['password'] = 'FILTERED'; } return $notice; });
Ignoring specific exceptions
$notifier->addFilter(function ($notice) { if ($notice['errors'][0]['type'] == 'MyExceptionClass') { // Ignore this exception. return null; } return $notice; });
Add user data to the notice
$notifier->addFilter(function ($notice) { $notice['context']['user']['name'] = 'Avocado Jones'; $notice['context']['user']['email'] = 'AJones@guacamole.com'; $notice['context']['user']['id'] = 12345; return $notice; });
Setting severity
Severity allows
categorizing how severe an error is. By default, it's set to error. To
redefine severity, simply overwrite context/severity of a notice object. For
example:
$notice = $notifier->buildNotice($e); $notice['context']['severity'] = 'critical'; $notifier->sendNotice($notice);
Error handler
Notifier can handle PHP errors, uncaught exceptions and shutdown. You can register appropriate handlers using following code:
$handler = new Airbrake\ErrorHandler($notifier); $handler->register();
Under the hood $handler->register does following:
set_error_handler([$this, 'onError'], error_reporting()); set_exception_handler([$this, 'onException']); register_shutdown_function([$this, 'onShutdown']);
Laravel integration
See https://github.com/TheoKouzelis/laravel-airbrake
Symfony integration
See https://github.com/aminin/airbrake-bundle
CakePHP 3.x integration
See https://gist.github.com/mauriciovillalobos/01a97f9ee6179ad70b17d54f37cc5010
Zend Framework integration
See https://github.com/FrankHouweling/zend-airbrake
Monolog integration
$log = new Monolog\Logger('billing'); $log->pushHandler(new Airbrake\MonologHandler($notifier)); $log->addError('charge failed', ['client_id' => 123]);
Extra configuration options
appVersion
The version of your application that you can pass to differentiate exceptions between multiple versions. It's not set by default.
$notifier = new Airbrake\Notifier([ // ... 'appVersion' => '1.2.3', // ... ]);
host
By default, it is set to api.airbrake.io. A host is a web address containing a
scheme ("http" or "https"), a host and a port. You can omit the port (80 will be
assumed) and the scheme ("https" will be assumed).
$notifier = new Airbrake\Notifier([ // ... 'host' => 'errbit.example.com', // put your errbit host here // ... ]);
remoteConfig
Configures the remote configuration feature. Every 10 minutes the notifier will make a GET request to Airbrake servers to fetching a JSON document containing configuration settings for your project. The notifier will apply these new settings at runtime. By default, it is enabled.
To disable this feature, configure your notifier with:
$notifier = new Airbrake\Notifier([ // ... 'remoteConfig' => false, // ... ]);
Note: it is not recommended to disable this feature. It might negatively impact how your notifier works. Please use this option with caution.
rootDirectory
Configures the root directory of your project. Expects a String or a Pathname, which represents the path to your project. Providing this option helps us to filter out repetitive data from backtrace frames and link to GitHub files from our dashboard.
$notifier = new Airbrake\Notifier([ // ... 'rootDirectory' => '/var/www/project', // ... ]);
environment
Configures the environment the application is running in. Helps the Airbrake dashboard to distinguish between exceptions occurring in different environments. By default, it's not set.
$notifier = new Airbrake\Notifier([ // ... 'environment' => 'staging', // ... ]);
httpClient
Configures the underlying http client that must implement GuzzleHttp\ClientInterface.
// Supply your own client. $client = new Airbrake\Http\GuzzleClient( new GuzzleHttp\Client(['timeout' => 3]) ); $notifier = new Airbrake\Notifier([ // ... 'httpClient' => $client, // ... ]);
Filtering keys
With keysBlocklist option you can specify list of keys containing sensitive information that must be filtered out, e.g.:
$notifier = new Airbrake\Notifier([ // ... 'keysBlocklist' => ['/secret/i', '/password/i'], // ... ]);
Running tests
Run via docker:
docker compose run tests
Or run locally
composer install vendor/bin/phpunit
PHPDoc
composer require phpdocumentor/phpdocumentor vendor/bin/phpdoc -d src firefox output/index.html
Contact
In case you have a problem, question or a bug report, feel free to:
License
PHPBrake is licensed under The MIT License (MIT).
airbrake/phpbrake 适用场景与选型建议
airbrake/phpbrake 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.02M 次下载、GitHub Stars 达 49, 最近一次更新时间为 2015 年 07 月 16 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「logging」 「exception」 「error」 「airbrake」 「notifier」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 airbrake/phpbrake 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 airbrake/phpbrake 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 airbrake/phpbrake 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A Zend Framework module that sets up Monolog for logging in applications.
Asynchronous Sentry for Symfony - Fire and forget
Stackdriver handler for Monolog (codeinternetapplications/monolog-stackdriver Fork).
High-performance, zero-dependency PSR-3 logger for MonkeysLegion with structured logging, handlers, processors, and PHP 8.4 features.
PHP Error Handler module that captures and displays all throwable errors in a given format, making debugging easier and more efficient
Error and Exception override and observers.
统计信息
- 总下载量: 2.02M
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 50
- 点击次数: 29
- 依赖项目数: 28
- 推荐数: 3
其他信息
- 授权协议: MIT
- 更新时间: 2015-07-16