Laravel

Laravel 是一个具有简洁、优雅语法的 PHP Web 应用程序框架。了解如何将其与 Sentry 集成。

  • 你需要一个 Sentry 账户 和项目
  • 你的 Laravel 应用程序需要运行在 PHP 7.2 或更高版本
  • 你的 Laravel 版本需要是 11.x 或更高版本
  • 如果你使用的是 旧版本 或需要 Lumen 特定的说明,请阅读相应的指南

安装 sentry/sentry-laravel 包:

Copied
composer require sentry/sentry-laravel

通过在你的 bootstrap/app.php 中进行以下更改,启用捕获未处理的异常以报告给 Sentry:

bootstrap/app.php
Copied
<?php

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
use Sentry\Laravel\Integration;

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        //
    })
    ->withExceptions(function (Exceptions $exceptions) {
        Integration::handles($exceptions);
    })
    ->create();

或者,你可以将 Sentry 配置为 Laravel 日志通道

使用以下命令配置 Sentry DSN:

Copied
php artisan sentry:publish --dsn=https://examplePublicKey@o0.ingest.sentry.io/0

它会创建配置文件 (config/sentry.php) 并将 DSN 添加到你的 .env 文件中。

.env
Copied
SENTRY_LARAVEL_DSN=https://examplePublicKey@o0.ingest.sentry.io/0

你可以使用提供的 sentry:test artisan 命令来测试你的配置:

Copied
php artisan sentry:test

你可以通过创建一个会抛出异常的路由来验证 Sentry 是否在你的 Laravel 应用程序中捕获错误:

routes/web.php
Copied
Route::get('/debug-sentry', function () {
    throw new Exception('My first Sentry error!');
});

访问此路由将触发一个异常,并被 Sentry 捕获。

config/sentry.php 中设置 traces_sample_rate 或在 .env 中设置 SENTRY_TRACES_SAMPLE_RATE 为大于 0.0 的值。设置大于 0.0 的值将启用跟踪,null(默认值)将禁用跟踪。

.env
Copied
# Be sure to lower this value in production otherwise you could burn through your quota quickly.
SENTRY_TRACES_SAMPLE_RATE=1.0

上面的示例配置将传输 100% 的捕获跟踪。请确保在生产环境中降低此值,否则可能会迅速用完配额。

你还可以通过使用 traces_sampler 选项更精细地控制采样率。了解更多内容请参阅 使用采样过滤事务事件

性能数据通过一种称为“transactions”的新事件类型传输,你可以在 分布式跟踪 中了解更多信息。

当 Sentry 安装在你的应用程序中时,它在开发或运行测试时也会处于活动状态。

你通常不希望在开发或运行测试时将错误发送到 Sentry。为了避免这种情况,请将 DSN 值设置为 null 以禁用发送错误到 Sentry。

你也可以通过不在 .env 中定义 SENTRY_LARAVEL_DSN 或将其定义为 SENTRY_LARAVEL_DSN=null 来实现这一点。

如果你在开发或运行测试时仍然启用 Sentry,可能会对应用程序或测试套件的性能产生负面影响。

如果你使用 Laravel 的 Forge 平台来配置和部署你的 PHP 应用程序,可以通过 Forge 创建一个 Sentry 组织。

Sentry 和 Forge