homeapp / monolog-sentry-handler
Sentry 处理器用于 PHP SDK
2.0.2
2023-05-31 08:45 UTC
Requires
- php: ^7.4 || ^8
- monolog/monolog: ^1.6 || ^2.0
- sentry/sentry: ^3.17
Requires (Dev)
- ext-json: *
- coduo/php-matcher: ^3.2.2
- friendsofphp/php-cs-fixer: ^2.15
- jangregor/phpstan-prophecy: ^0.8.1
- phpstan/phpstan: ^0.12.25
- phpstan/phpstan-phpunit: ^0.12.8
- phpunit/phpunit: ^7.5||^8.3
- sentry/sdk: ^3.1
- symfony/phpunit-bridge: ^4.3
- symfony/var-dumper: >4.3
- vimeo/psalm: ^4.7
This package is auto-updated.
Last update: 2024-08-30 01:26:23 UTC
README
这是一个用于 Sentry PHP SDK v2 的 Monolog 处理器,支持面包屑功能。
特性
- 将每个日志记录发送到 Sentry 服务器
- 在批量处理时,将日志记录作为面包屑发送;主报告的日志记录是级别最高的那个
- 当主日志记录上下文中设置异常时,发送日志和异常
- 自定义发送到 Sentry 的数据以满足您的需求
要求
- PHP 7.4+
- Sentry PHP SDK
安装
建议的安装方法是使用 composer
composer require homeapp/monolog-sentry-handler
基本用法
<?php use Homeapp\MonologSentryHandler\SentryHandler; use Sentry\State\Hub; $sentryHandler = new SentryHandler(Hub::getCurrent()); /** @var $logger Monolog\Logger */ $logger->pushHandler($sentryHandler); // Add records to the log $logger->debug('Foo'); $logger->error('Bar');
查看 处理器构造函数 以了解如何控制最小日志级别、冒泡和作用域处理器。
ℹ️
- 将此处理器与
FingersCrossedHandler
和BufferHandler
结合使用是一个好主意,这样可以利用 Sentry 的面包屑功能。它为每个 Sentry 事件提供了最大的上下文,并防止 HTTP 请求变慢。- 请注意问题 getsentry/sentry-php#878,可以通过使用另一个 HTTP 客户端来解决。
查看 symfony 指南以获取一个完整的示例,该示例涵盖了所有这些点。
文档
- Symfony 指南:提供了一种将此处理器集成到您的应用程序的方法
- Symfony 简单安装:提供了一种不使用 FingersCrossed monolog 处理器使用此处理器的方法
常见问题解答
与官方 Monolog Sentry 处理器相比有什么不同?
它们几乎是同一件事,但这个处理程序在批量刷新时将 Monolog 记录捕获为面包屑。
面包屑支持已在拉取请求中提出,但由于一些合理的理由已被拒绝,这些理由可以在 PR 中查看。基本上,官方版本旨在尽可能简单。
为什么是 symfony 指南,而不是官方的 symfony 包?
官方 symfony 包依赖于 Symfony KernelException 事件 将事件发送到 Sentry,而 symfony 已经通过 Monolog 包处理日志/捕获错误。
最终,无法报告静默错误,这在您希望意识到问题而不使您的应用程序崩溃时可能会造成问题。
关于将其贡献给 Monolog 项目怎么办?
根据此 评论,Monolog 项目不接受具有第三方依赖项的新处理程序。
在我看来,具有第三方依赖项的新处理程序的正确方法是以第三方包的形式发布,要求对 monolog 和所需依赖项进行要求。这允许 Composer 解决所有内容,这在实际中确实更有意义。
更改日志
查看 CHANGELOG.md。