直接修改 config/logging.php 即可对接 Sentry,将 'sentry' 加入 stack 的 channels 数组;Flare 需手动在 Handler::report() 中调用 Flare::report() 并配置 context;两者均需注意环境变量与采样率设置。

直接改 config/logging.php 就能对接 Sentry
默认 Laravel 日志通道是 stack,它本身支持多通道写入。Sentry 官方维护的 sentry-laravel 包会自动注册一个 sentry 日志通道,你只需把它加进 stack 的 channels 数组里,错误日志就会同时写入本地文件和 Sentry。
操作步骤:
- 运行
composer require sentry/sentry-laravel - 执行
php artisan sentry:publish --dsn=https://xxx@o123.ingest.sentry.io/456(替换为你的 DSN) - 打开
config/logging.php,找到'stack'通道,把'sentry'加进'channels'数组里
'stack' => [
'driver' => 'stack',
'channels' => ['single', 'sentry'], // ← 这里加一行
'ignore_exceptions' => false,
],
注意:Laravel 9+ 默认启用了 ignore_exceptions => false,但老版本可能为 true,务必确认设为 false,否则异常不会触发日志通道。
flare-php-sdk 不走日志通道,要手动绑定异常处理器
Flare 的 SDK(flareapp/io)不提供标准日志通道,而是通过 Laravel 的异常处理机制注入。它会在 App\Exceptions\Handler 中拦截未捕获异常,并上报到 Flare 后台。
关键点:
- 安装后需在
app/Exceptions/Handler.php的report()方法里调用Flare::report() - 不能只依赖
Log::error()—— Flare 不监听日志,只监听report()流程 - 确保
APP_DEBUG=false,否则 Flare 默认跳过上报(开发环境可手动开启)
use FlareClient\Flare;
public function report(Throwable $exception)
{
Flare::report($exception);
parent::report($exception);
}
如果项目已重写 report(),别忘了保留 parent::report($exception),否则本地日志会丢失。
Sentry 和 Flare 对 context 的处理差异很大
两者都支持传额外上下文数据,但方式不同,容易漏传或格式错乱:
- Sentry 接收的是扁平键值对,比如
['user_id' => 123, 'order_status' => 'pending'],会直接显示在事件详情页的 “Context” 标签页 - Flare 要求用
context()方法链式添加,且只接受字符串或数组,不支持对象;传对象会报错或静默丢弃 - 日志中用
Log::error('msg', $context),Sentry 会自动提取;Flare 不响应这个调用,必须显式调用Flare::context()
例如想上报当前用户 ID:
// Sentry:自动带入(只要用了 Log::error)
Log::error('Payment failed', ['user_id' => auth()->id()]);
// Flare:必须手动塞
Flare::context(['user_id' => (int) auth()->id()]);
别忽略 APP_ENV 和采样率配置
两个服务都默认在 local 环境下禁用上报,但逻辑不同:
- Sentry 依赖
SENTRY_ENVIRONMENT环境变量,若没设,默认用APP_ENV;但若APP_ENV=local,Sentry SDK 会直接跳过发送 - Flare 默认只在
production上报,且可通过FLARE_REPORTING_ENABLED强制开关;开发时临时调试建议设为true - 高流量项目记得配采样率,Sentry 用
traces_sample_rate,Flare 用reporting_sampling_rate,否则日志量爆炸还收费
最容易被忽略的是:Laravel 的 APP_ENV=staging 在 Sentry 中不会自动识别为生产环境,得显式设置 SENTRY_ENVIRONMENT=staging 并在 Sentry 控制台配置对应环境告警规则。










