rcrowe/raven

此包最新版本(0.2.0)没有可用的许可证信息。

Raven 是一个支持通过多个提供商进行后台处理的 Sentry 客户端。

0.2.0 2014-06-13 10:44 UTC

This package is auto-updated.

Last update: 2024-08-29 03:37:24 UTC


README

Build Status Latest Stable Version Coverage Status Total Downloads

Raven 是一个用于记录和发送消息到 Sentry 的客户端。

其独特之处在于可以在后台将这些消息发送到 Sentry。不再需要在发送 HTTP 请求时减慢速度!

Raven 在如何捕获、处理和发送这些消息方面提供了灵活性。同时也提供了快速无缝集成到各种框架中的能力,例如

Sentry

安装

rcrowe\raven 添加到 composer.json 中的要求

{
    "require": {
        "rcrowe/raven": "~0.2.0"
    }
}

使用 composer update 更新您的包或使用 composer install 安装。

然后按照您 提供商 的说明进行操作(如果您正在使用一个的话)。

使用

此库公开了与官方 raven-php 客户端相同的 API 用于记录您的消息。只需将 Raven_Client 替换为 rcrowe\Raven\Client 即可。有关记录消息的使用方法,请参阅 raven-php

要立即记录消息并将其发送到 Sentry(默认操作)

$raven = new \rcrowe\Raven\Client(##DSN##);

$raven->captureMessage('FooBar');

处理器

处理器负责将新捕获的消息放入后台队列。如果没有在 raven 客户端中注册处理器,则消息会立即发送。

以下是如何向客户端添加处理器的示例

$raven = new \rcrowe\Raven\Client(##DSN##);

$raven->setHandler(
    new \rcrowe\Raven\Handler\Sync
);
同步处理器

(默认)与 raven-php 一样,新消息会立即发送。

Laravel 处理器

如果在使用 Laravel 项目中,将使用 illuminate\queue API。要改进 Laravel 集成,请查看下面的 Laravel 提供商

$raven = new \rcrowe\Raven\Client(##DSN##);

$raven->setHandler(
    new \rcrowe\Raven\Handler\Laravel(
        null,
        App::make('queue')
    );
);

传输

传输负责将消息发送到 Sentry API。传输始终是传递给处理器的第一个参数。如果没有提供传输,则默认为 HTTP。

$raven->setHandler(
    new \rcrowe\Raven\Handler\Sync(
        new \rcrowe\Raven\Transport\Dummy
    )
);
模拟

模拟传输什么都不做。不会将任何内容发送到 API。您可能不希望在开发环境中发送任何消息。

HTTP

(默认)通过 HTTP 发送消息。为此,我们使用出色的 HTTP 客户端 Guzzle

$raven->setHandler(
    new \rcrowe\Raven\Handler\Sync(
        new \rcrowe\Raven\Transport\Guzzle
    )
);

由于这是默认传输机制,因此不需要将其传递给处理器。上面的调用与以下相同

$raven->addHandler(
    new \rcrowe\Raven\Handler\Sync
);

提供商

提供商提供与其他库/框架的无痛集成。

Laravel

安装

将服务提供商添加到 app/config/app.php

'rcrowe\Raven\Provider\Laravel\RavenServiceProvider',

可选地注册外观到您的别名

'Sentry' => 'rcrowe\Raven\Provider\Laravel\Facade\Raven',

配置

Raven 需要知道您的客户端 DSN。首先使用以下命令发布 Raven 配置文件

php artisan config:publish rcrowe/raven

然后编辑 app/config/packages/rcrowe/raven/config.php

您还可以从 app/config/services.php 设置您的 Raven DSN

'raven' => [
	'dsn' => '...'
],

注意: Raven 使用 Laravel 队列,因此请确保您的 app/config/queue.php 已正确设置。

使用

现在,无论您在哪里想要记录消息,只需使用正常的 Log 外观即可。

try {
    throw new Exception('This is an example');
} catch (Exception $ex) {
    Log::error($ex);
}

要捕获和发送所有消息,您可以添加以下内容

App::error(function(Exception $exception, $code)
{
    Log::error($exception);
});

注意: 注意,Laravel 默认在 app/start/global.php 中执行此操作

使用别名,您可以设置/删除所有消息的用户信息

Sentry::setUser([
	'id'   => 1,
	'name' => 'Rob Crowe',
]);

Sentry::removeUser();

注意:查看配置文件获取更多信息!