jenssegers / raven
Sentry (Raven) 错误监控集成,适用于 Laravel 项目
Requires
- php: >=5.4
- illuminate/support: ^4.0|^5.0
- sentry/sentry: ^1.0
Requires (Dev)
- mockery/mockery: ^0.9
- orchestra/testbench: ^3.0
- phpunit/phpunit: ^4.0|^5.0
- satooshi/php-coveralls: ^1.0
README
Sentry (Raven) 错误监控集成,适用于 Laravel 项目。此库为 Laravel 的日志组件添加了一个监听器。Laravel 的认证和会话信息将被发送到 Sentry 的用户上下文中,还包括一些其他有用的标签,如 '环境'、'服务器'、'php_version' 和 'ip'。
安装
使用 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); }
对于记录消息或异常,您可以使用以下任何方法:debug
、notice
、warning
、error
、critical
、alert
或 emergency
。
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); }