composer怎么安装Sentry异常监控SDK_composer日志告警依赖引入【实操】

13次阅读

应根据框架和日志系统选择对应包:laravel 5.6+ 用 sentry/sentry-laravel,symfony/Slim/纯 php 用 sentry/sentry 并手动注册,已有 Monolog 的项目补装 monolog-sentry-handler 桥接。

composer怎么安装Sentry异常监控SDK_composer日志告警依赖引入【实操】

直接用 composer require 就能装好 Sentry PHP SDK,但默认不带日志通道集成,告警收不到 Laravel 或 Monolog 的日志——得手动配 sentry/sentry-laravel 或桥接 monolog-sentry-handler

装哪个包?看框架和日志系统

别直接 composer require sentry/sentry,那是纯底层 SDK,没自动捕获、没日志绑定。实际项目要分情况:

  • Laravel 5.6+:优先用 composer require sentry/sentry-laravel,它自带异常拦截 + 日志通道 + Artisan 命令
  • Symfony / Slim / 纯 PHP:用 composer require sentry/sentry + 手动注册错误处理器
  • 已有 Monolog(比如 CodeIgniter、thinkphp):补装 composer require monolog/monolog sentry/sentry,再加 monolog-sentry-handler 桥接器

配置 DSN 和环境时最容易漏的三件事

SENTRY_DSN 不只是贴链接就完事,环境变量、初始化时机、上下文隔离都影响上报效果:

  • DSN 必须设在 .env 里(Laravel)或启动早期(如 index.php 开头),不能等路由加载完才 init
  • 不同环境要用不同 environment 字段,否则测试服错误混进生产看板:
    SENTRY_ENVIRONMENT=production
  • 若用队列或 CLI 命令,需单独调用 Sentryinit(),否则后台任务的异常不上报

Laravel 日志告警失效?检查 Handler 是否被覆盖

装了 sentry/sentry-laravel 后,storage/logs/laravel.log 里的错误仍不触发 Sentry 告警,大概率是日志通道没走 Sentry Handler:

  • 确认 config/Logging.phpstacksingle 通道里包含 sentry
    'channels' => [     'stack' => [         'driver' => 'stack',         'channels' => ['single', 'sentry'],     ],     'sentry' => [         'driver' => 'sentry',     ], ]
  • 如果自定义了 MonologHandlerstreamHandler 并直接 new 实例,会绕过 Laravel 的 Sentry Handler,必须用 tap 或改用 createLogger
  • 调试技巧:临时在 appExceptionsHandler::report() 里加 SentrycaptureException($exception),验证 DSN 是否有效

真正卡住人的不是安装命令,而是 DSN 初始化太晚、日志通道没挂载、CLI 环境没重 init —— 这三处一错,看着装好了,其实一条告警都不会发出去。

text=ZqhQzanResources