o0khoiclub0o/honeybadger-php

向 honeybadger.io 报告错误的非官方 PHP 库

0.1.0 2013-04-05 20:22 UTC

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
));

故障排除

待办事项

贡献

  1. 分叉它
  2. 创建您的功能分支(git checkout -b my-new-feature
  3. 提交您的更改(git commit -am '添加某些功能'
  4. 将更改推送到分支(git push origin my-new-feature
  5. 创建新的拉取请求

鸣谢

该库的大部分风格、API、文档和结构直接遵循令人惊叹的honeybadger-ruby gem。

许可

MIT许可。有关详细信息,请参阅LICENSE.txt。