o0khoiclub0o / honeybadger-php
向 honeybadger.io 报告错误的非官方 PHP 库
Requires
- php: >= 5.3.0
- guzzle/guzzle: >= 3.0, < 3.5
Requires (Dev)
- gevans/phaker: dev-master
- phpunit/phpunit: >= 3.7.19
- slim/slim: 2.*
Suggests
- slim/slim: 2.*
This package is not auto-updated.
Last update: 2024-09-28 15:56:54 UTC
README
honeybadger-php 是一个向 Honeybadger 报告应用程序错误的非官方库。
兼容性
honeybadger-php 是针对 PHP 版本 5.3 和 5.4 开发和测试的。
独立安装
将 honeybadger-php 添加到您的 composer.json
{ // ... "require": { // ... "gevans/honeybadger-php": "*" } // ... }
然后在 bootstrap/index.php
/initializers 中配置 Honeybadger
<?php use Honeybadger\Honeybadger; Honeybadger::$config->values(array( 'api_key' => '[your-api-key]', ));
您的应用程序将向 Honeybadger 报告未处理的错误和异常。就这么简单!
Slim 安装
将 honeybadger-php 添加到您的 composer.json
{ // ... "require": { // ... "gevans/honeybadger-php": "*" } // ... }
在您的应用程序定义后调用 Honeybadger\Slim::init()
<?php $app = new Slim(array( // ... )); $app->add(new Honeybadger\Slim(array( 'api_key' => '[your-api-key]', 'project_root' => realpath(__DIR__), ))); // ... $app->run();
其他集成
此库通过遵循上述 独立安装 步骤可以很好地工作。但是,如果您想集成您喜欢的框架,可以使用 Slim 集成 作为参考。如果您已经编写了自己的集成并希望分享,请发送 pull request 将其添加到列表中
- 这里还没有内容...
使用方法
大部分情况下,Honeybadger 会自行工作。
它拦截未处理的错误和未捕获的异常,并发送通知。
如果您想记录您自己捕获的任意内容,可以这样做
<?php try { // ... } catch (Exception $e) { Honeybadger::notify($e); } // ...
::notify()
调用会将通知发送到 Honeybadger 以供后续分析。
忽略的环境
请注意,在开发模式下,Honeybadger 将 不会 通知发生的异常。在生产环境中,请确保您设置了 Honeybadger 的环境名称。对于使用 Slim 集成的应用程序,Honeybadger 会通过使用 您的应用程序配置模式 来为您处理此操作
<?php Honeybadger::$config->values(array( // ... 'environment_name' => 'production', ));
您可以通过设置 Honeybadger 初始化器中的 development_environments
选项来修改要忽略的环境
<?php // To add an additional environment to be ignored: Honeybadger::$config->development_environments[] = 'staging'; // To override the default environments completely: Honeybadger::$config->development_environments = array( 'test', 'behat', );
如果您出于任何原因选择覆盖 development_environments
选项,请确保您的测试环境被忽略。
发送自定义数据
Honeybadger 允许您使用 Honeybadger::context()
发送自定义数据。以下是一个在 Slim 回调中发送一些用户特定信息的示例
<?php $authenticate_user = function() use $app { // ... if (isset($current_user)) { Honeybadger::context(array( 'user_id' => $current_user->id, 'user_email' => $current_user->email, )); } }; // ... $app->get('/protected_resource', $authenticate_user, function() { // ... });
现在每当发生错误时,Honeybadger 都会显示受影响用户的 ID 和电子邮件地址(如果有的话)。
对 ::context()
的后续调用将合并现有数组与新数据,因此您可以在请求的生命周期中有效地构建上下文。
超越异常
您还可以将数组传递给 Honeybadger::notify()
方法,并在您的应用程序中的任何位置存储您想要的任何内容,而不仅仅是异常。
<?php try { $params = array( // Params that you pass to a method that can throw an exception. ); my_unpredictable_method($params); } catch (Exception $e) { Honeybadger::notify(array( 'error_class' => 'Special Error', 'error_message' => 'Special Error: '.$e->getMessage(), 'parameters' => $params, )); }
Honeybadger::notify()
将获取有关错误的全部信息。至于数组,这些是您应该传递的键
error_class
- 使用此键将类似错误分组在一起。当 Honeybadger 捕获异常时,它发送该异常对象的类名。error_message
- 这是您在错误列表中看到的错误标题。对于异常,它是 " [ ] : "parameters
- 虽然有几种将额外数据发送到 Honeybadger 的方法,但将数组作为parameters
在上述示例中发送是最常见的用例。当 Honeybadger 在控制器中捕获异常时,实际 HTTP 客户端请求参数将通过此键发送。
蜜獾将您传入的数组与这些默认选项合并
<?php array( 'api_key' => Honeybadger::$config->api_key, 'error_message' => 'Notification', 'backtrace' => debug_backtrace(), 'parameters' => array(), 'session' => $_SESSION, 'context' => Honeybadger::context(), );
您可以覆盖其中任何参数。
在“超越异常”时发送shell环境变量
我们经常看到的一个请求是,在手动异常通知时发送shell环境变量。我们建议与CGI数据或Rack环境(分别使用:cgi_data或:rack_env键)一起发送。
有关更多详细信息,请参阅 Honeybadger::Notice::__construct
,见 lib/Honeybadger/Notice.php
过滤
您可以为蜜獾不会报告的错误指定白名单。当您对某些错误如此冷漠,以至于甚至不想将它们记录下来时,请使用此功能。
此过滤器仅适用于自动通知,不适用于手动通知(当直接调用::notify()
时)。
要忽略错误,请在您的蜜獾配置块中指定它们的名称
<?php Honeybadger::$config->ignore[] = 'SomeException';
要忽略仅某些错误(并覆盖默认设置),请使用ignore_only()
方法
<?php Honeybadger::$config->ignore_only('RandomError');
被忽略的类的子类也将被忽略。
要忽略某些用户代理,请添加ignore_user_agent
属性
<?php Honeybadger::$config->ignore_user_agent[] = 'IgnoredUserAgent';
要根据其他条件忽略异常,请使用ignore_by_filter
<?php Honeybadger::$config->ignore_by_filter(function($notice) { if ($notice->error_class == 'Exception') return TRUE; });
要用[FILTERED]
替换发送到蜜獾服务的敏感信息,请使用params_filters
<?php Honeybadger::$config->params_filters[] = 'credit_card_number';
要禁用发送会话数据
Honeybadger::$config->values(array( 'api_key' => '1234567890abcdef', 'send_request_session' => FALSE, ));
代理支持
如果您的服务器无法直接连接到蜜獾服务器,通知器支持使用代理。要配置代理设置,请将以下信息添加到您的蜜獾配置中。
<?php Honeybadger::$config->values(array( 'proxy_host' => 'proxy.host.com', 'proxy_port' => 4038, 'proxy_user' => 'foo', // optional 'proxy_pass' => 'bar', // optional ));
故障排除
待办事项
贡献
- 分叉它
- 创建您的功能分支(
git checkout -b my-new-feature
) - 提交您的更改(
git commit -am '添加某些功能'
) - 将更改推送到分支(
git push origin my-new-feature
) - 创建新的拉取请求
鸣谢
该库的大部分风格、API、文档和结构直接遵循令人惊叹的honeybadger-ruby gem。
许可
MIT许可。有关详细信息,请参阅LICENSE.txt。