v-six/silex-raven

Sentry 的 Silex 服务提供者

0.1.2 2014-04-15 09:19 UTC

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 !");
});

资源