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 updatecomposer 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 设置正确。

使用

现在无论您想在何处记录消息,只需使用常规日志门面即可。

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();

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