raven / raven
Requires
- php: >=5.2.4
- ext-curl: *
Requires (Dev)
- fabpot/php-cs-fixer: ^1.8.0
- phpunit/phpunit: ^4.6.6
- dev-master / 0.16.x-dev
- 0.15.0
- 0.14.0
- 0.13.0
- 0.12.1
- 0.12.0
- 0.11.0
- 0.10.0
- 0.9.1
- 0.9.0
- 0.8.0
- 0.7.1
- 0.7.0
- 0.6.0
- 0.5.1
- 0.4.0
- 0.3.1
- 0.3.0
- 0.2.0
- 0.1
- dev-releases/0.16.x
- dev-releases/0.14.x
- dev-sentry-laravel
- dev-improve-serialization
- dev-releases/0.12.x
- dev-pauloschilling-patch-1
- dev-ameliaikeda-travis-changes
- dev-passthru-error-handler
- dev-fix-build
- dev-localheinz-feature/container-based-infrastructure
- dev-switch-endpoints
This package is auto-updated.
Last update: 2022-02-01 12:20:09 UTC
README
已弃用:请切换到sentry-php包。
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