gfilipiak/raven

PHP 客户端用于 Sentry (http://getsentry.com)

0.7.1 2013-09-17 19:35 UTC

This package is not auto-updated.

Last update: 2024-09-24 04:14:33 UTC


README

https://secure.travis-ci.org/getsentry/raven-php.png?branch=master

raven-php 是 Sentry 的 PHP 客户端。

// Instantiate a new client with a compatible DSN
$client = new Raven_Client('http://public:secret@example.com/1');

// Capture a message
$event_id = $client->getIdent($client->captureMessage('my log message'));
if ($client->getLastError() !== null) {
    printf('There was an error sending the event to Sentry: %s', $client->getLastError());
}

// Capture an exception
$event_id = $client->getIdent($client->captureException($ex));

// Provide some additional data with an exception
$event_id = $client->getIdent($client->captureException($ex, array(
    'extra' => array(
        'php_version' => phpversion()
    ),
)));

// Give the user feedback
echo "Sorry, there was an error!";
echo "Your reference ID is " . $event_id;

// Install error handlers and shutdown function to catch fatal errors
$error_handler = new Raven_ErrorHandler($client);
$error_handler->registerExceptionHandler();
$error_handler->registerErrorHandler();
$error_handler->registerShutdownFunction();

安装

使用 Composer 安装

如果您使用 Composer 来管理依赖项,您可以使用它添加 Raven。

$ composer require raven/raven:$VERSION

(将 $VERSION 替换为 Packagist 上可用的版本之一 Packagist) 或从 master 分支获取最新版本

$ composer require raven/raven:dev-master

请注意,使用不稳定版本是不推荐的,应避免使用。此外,您应该定义最大版本,例如通过执行 >=0.6,<1.0~0.6

或者,使用 ^ 运算符来指定版本,例如:

$ composer require raven/raven:^0.11.0

Composer 会为您处理自动加载,因此如果您需要 vendor/autoload.php,您就可以开始了。

从 GitHub 安装源代码

要安装源代码

$ git clone git://github.com/getsentry/raven-php.git

并使用自动加载器包含它

require_once '/path/to/Raven/library/Raven/Autoloader.php';
Raven_Autoloader::register();

测试您的连接

PHP 客户端包括一个简单的辅助脚本,用于测试您与 Sentry 主服务器的连接和凭据

$ bin/raven test https://public:secret@app.getsentry.com/1
Client configuration:
-> server: [https://sentry.example.com/api/store/]
-> project: 1
-> public_key: public
-> secret_key: secret

Sending a test event:
-> event ID: f1765c9aed4f4ceebe5a93df9eb2d34f

Done!

注意

CLI 在 HTTP 请求上强制执行同步选项,而默认配置是异步的。

配置

存在几个选项,允许您配置 Raven_Client 的行为。这些选项作为构造函数的第二个参数传递,并期望是一个键值对数组

$client = new Raven_Client($dsn, array(
    'option_name' => 'value',
));

名称

一个字符串,用于覆盖服务器的默认主机名。

默认为 Raven_Compat::gethostname()

标签

一个要应用于此上下文事件的标签数组。

'tags' => array(
    'php_version' => phpversion(),
)

curl方法

默认为 'sync'。

可用方法

  • sync (默认):在请求时立即发送请求
  • async:使用 curl_multi 处理器进行尽力异步提交
  • exec:通过为每个项目分叉一个 curl 进程来异步发送事件

curl路径

默认为 'curl'。

指定用于 'exec' curl 方法的 curl 二进制文件的路径。

跟踪

将此设置为 false 以禁用堆栈跟踪中的反射跟踪(函数调用参数)。

记录器

调整消息的默认记录器名称。

默认为 php

ca_cert

CA 证书包的路径。

默认为包含 getsentry.com 的常用包:./data/cacert.pem

注意事项

  • 除非 curl 抛出错误并建议需要证书,否则忽略 CA 包。
  • 此选项目前仅在同步 curl 传输中使用。

curl_ssl_version

要使用的 SSL 版本(2 或 3)。默认情况下,PHP 将尝试自己确定此版本,尽管在某些情况下必须手动设置。

message_limit

默认为 1024 个字符。

此值用于截断消息和帧变量。然而,这并不能保证整个消息的长度将受到此值的限制。

处理器

一个要在发送到 Sentry 之前处理数据的类数组。默认情况下,使用 Raven_SanitizeDataProcessor

processorOptions

在将处理器添加到 Raven_Client 使用的处理器列表之前,将传递到 Raven_Processor 子类中的 setProcessorOptions() 函数的选项

下面是一个重写 Raven_SanitizeDataProcessor 中正则表达式的示例

'processorOptions' => array(
    'Raven_SanitizeDataProcessor' => array(
                'fields_re' => '/(user_password|user_token|user_secret)/i',
                'values_re' => '/^(?:\d[ -]*?){15,16}$/'
            )
)

提供请求上下文

大多数情况下,您并没有直接调用Raven,但您仍然希望提供一些额外的上下文。这个生命周期通常包括以下内容

  • 通过中间件设置一些上下文(例如,登录用户)
  • 在请求生命周期中,发送所有提供的上下文与任何事件
  • 清理上下文

提供请求上下文有三种主要方法

// bind the logged in user
$client->user_context(array('email' => 'foo@example.com'));

// tag the request with something interesting
$client->tags_context(array('interesting' => 'yes'));

// provide a bit of additional context
$client->extra_context(array('happiness' => 'very'));

如果您在生命周期中执行额外的请求,您还需要确保您清理上下文(以重置其状态)

$client->context->clear();

贡献

首先,请确保您可以运行测试套件。安装开发依赖项

$ composer install

现在您可以使用phpunit

$ vendor/bin/phpunit

资源