raven/raven

此包已被废弃,不再维护。作者建议使用sentry/sentry包代替。

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

0.15.0 2016-04-29 11:50 UTC

README

已弃用:请切换到sentry-php包。

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上可用的版本之一) 或从 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',
));

name

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

默认为 Raven_Compat::gethostname()

tags

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

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

curl_method

默认为 'sync'。

可用方法

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

curl_path

默认为 'curl'。

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

trace

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

logger

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

默认为php

ca_cert

CA证书包的路径。

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

注意事项

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

curl_ssl_version

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

message_limit

默认为1024个字符。

此值用于截断消息和帧变量。但是,不能保证整个消息的长度将由此值限制。

processors

一个类数组,用于在将数据发送到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

资源