tonijz/raven

此包最新版本(0.0.1)没有提供许可信息。

Raven客户端,支持通过多个提供程序进行后台处理。

0.0.1 2013-10-31 18:13 UTC

This package is not auto-updated.

Last update: 2024-09-24 06:58:49 UTC


README

Raven是用于记录和传输消息到Sentry的客户端。

它的特别之处在于可以将这些消息在后台传输到Sentry。不再需要在发起HTTP请求时减慢速度!

安装

在composer.json中将rcrowe\raven添加为需求

{
    "require": {
        "rcrowe/raven": "dev-master"
    }
}

使用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客户端注册处理器,则消息将直接传输。

以下是如何将处理器添加到客户端

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

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

同步处理器

(默认) 与raven-php类似,新消息会立即传输。

Laravel处理器

如果在Laravel项目中使用,则使用illuminate\queue API。有关改进Laravel集成的信息,请参阅下面的Laravel提供者

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

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

Resque处理器

待办事项 - 将基于https://github.com/chrisboulton/php-resque

传输

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

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

模拟传输完全不执行任何操作。不会将任何消息传输到API。在开发环境中工作时不希望传输任何消息。

Http

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

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

作为默认传输机制,无需将其传递给处理器。上面的调用与以下调用相同

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

UDP

待办事项

提供者

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

Laravel

安装

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

php artisan config:publish rcrowe/raven --path vendor/rcrowe/raven/src/Provider/Laravel/config/

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

现在将RavenServiceProvider添加到app/config/app.php

rcrowe\Raven\Provider\Laravel\RavenServiceProvider

确保app/config/queue.php已按照您想要连接的后台队列的方式设置。有关在Laravel中处理队列的更多信息,请参阅他们的文档

用法

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

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