v-six / silex-raven
Sentry 的 Silex 服务提供者
0.1.2
2014-04-15 09:19 UTC
Requires
- php: >=5.3.0
- pimple/pimple: ~1.0
- raven/raven: ~0.8
Requires (Dev)
- phpunit/phpunit: ~3.7
- silex/silex: ~1.2
This package is not auto-updated.
Last update: 2024-09-28 14:52:17 UTC
README
这是一个基本的 Silex 服务提供者,用于 PHP 客户端 Sentry : getsentry/raven-php.
安装
推荐通过 Composer 安装 silex-raven。只需创建一个 composer.json 文件,并运行 php composer.phar install 命令即可
{ "require": { "v-six/silex-raven": "0.1.*" } }
或者,您可以下载 silex-raven.zip 文件并将其解压。
使用
$app->register(new SilexRaven\RavenServiceProvider(), array( 'raven.dsn' => 'http://public:secret@example.com/1', 'raven.options' => array( 'logger' => 'my-logger-name' // Set custom logger name ) 'raven.handle' => array( 'exceptions' => false, // Disable exceptions handler 'errors' => true, // Enable errors handler 'fatal_errors' => true, // Enable fatal_errors handler ) ) );
如有必要,在 raven.options
中设置您自己的选项(参见 Raven 文档)。所有处理器默认已注册,您可以通过将对应的配置输入设置为 false 在 raven.handle
中禁用它们。
自定义
您可以使用以下方式轻松捕获错误或异常
// Capture an error $app['raven']->captureMessage('Oops !'); // Capture an exception $app['raven']->captureException(new \Exception('Oops !')); // Capture an exception with additional debug data $app['raven']->captureException(new \Exception('Oops !'), array( 'extra' => array( 'php_version' => phpversion() ), ) );
显然,您也可以提供自定义请求上下文
// Bind the logged in user $app['raven']->user_context(array('email' => 'foo@example.com')); // Tag the request with something interesting $app['raven']->tags_context(array('interesting' => 'yes')); // Provide a bit of additional context $app['raven']->extra_context(array('happiness' => 'very')); // Clean all previously provided context $app['raven']->context->clear();
示例
以下是一个完整示例,与 Silex 错误处理器相结合(参见 Silex 错误处理器文档)
$app = new Silex\Application(); $app->register( new \SilexRaven\RavenServiceProvider(), ['raven.dsn' => 'http://public:secret@example.com/1'] ); $app->error(function (\Exception $e, $code) use($app, $user) { $app['raven']->user_context(array('email' => $user->email)); $app['raven']->captureException($e) $app['raven']->context->clear(); return new Response("There is an error !"); });