jenssegers/raven

Sentry (Raven) 错误监控集成,适用于 Laravel 项目

v1.11.0 2017-02-25 11:56 UTC

README

Build Status Coverage Status

Sentry (Raven) 错误监控集成,适用于 Laravel 项目。此库为 Laravel 的日志组件添加了一个监听器。Laravel 的认证和会话信息将被发送到 Sentry 的用户上下文中,还包括一些其他有用的标签,如 '环境'、'服务器'、'php_version' 和 'ip'。

rollbar

安装

使用 composer 安装

composer require jenssegers/raven

app/config/app.php 中添加服务提供者

Jenssegers\Raven\RavenServiceProvider::class,

如果您只想为特定环境启用 Sentry 报告,您可以在 AppServiceProvider 中有条件地加载服务提供者

if ($this->app->environment('production')) {
    $this->app->register(Jenssegers\Raven\RavenServiceProvider::class);
}

可选:注册 Raven 别名

'Raven'           => Jenssegers\Raven\Facades\Raven::class,

配置

此包支持通过环境变量和/或在 app/config/services.php 中找到的服务配置文件进行配置

'raven' => [
    'dsn'   => env('RAVEN_DSN'),
    'level' => env('LOG_LEVEL'),
],

level 变量定义了将日志消息发送到 Sentry 的最小日志级别。对于开发,您可以将其设置为 debug 以发送所有日志消息,或设置为 none 以发送所有消息。对于生产,您可以将其设置为 error 以忽略所有信息和调试消息。

有关可能的配置变量的更多信息,请参阅 https://github.com/getsentry/raven-php

Laravel 中的使用

在 Laravel 中,服务提供者将自动挂钩到 Laravel 的日志记录器并将所有匹配日志级别的消息发送到 Sentry。

如果您想将异常发送到 Sentry,只需使用 Log 门面即可

try {
	something();
} catch (\Exception $e) {
	Log::error($e);
}

对于记录消息或异常,您可以使用以下任何方法:debugnoticewarningerrorcriticalalertemergency

Log::debug('Here is some debug information');

替代使用

如果您更喜欢依赖注入而不是调用 Log 门面,您可以在控制器方法中对 Jenssegers\Raven\RavenHandler 类进行类型提示

use Jenssegers\Raven\RavenHandler as Raven;

...

public function index(Request $request, Raven $raven)
{
	Raven::info('Request received!');
}

上下文信息

包含的上下文构建器将自动收集有关当前登录用户和会话信息的信息。您可以通过这种方式传递额外的用户上下文信息

Log::error('Something went wrong', [
    'user' => ['name' => 'John Doe', 'email' => 'john@doe.com']
]);

或传递额外的标签

Log::info('Task completed', [
    'tags' => ['state' => 1234]
]);

或传递一些额外信息

Log::warning('Something went wrong', [
    'download_size' => 3432425235
]);

Lumen 中的使用

由于 Lumen 使用不同的日志处理方式,服务提供者无法拦截实际的异常。相反,您可以使用包含的 Raven 门面。首先将以下内容添加到您的 bootstrap/app.php

$app->register(Jenssegers\Raven\RavenServiceProvider::class);

然后将此内容添加到您的异常处理器中 app/Exceptions/Handler.php

use Jenssegers\Raven\Facades\Raven;

public function report(Exception $e)
{
    if ($this->shouldReport($e)) {
        Raven::error($e);
    }

    parent::report($e);
}