bgalati / monolog-sentry-handler
Sentry 处理器,适用于 PHP SDK v2/v3
2.1.0
2024-03-02 13:53 UTC
Requires
- php: ^7.4 || ^8.0
- monolog/monolog: ^1.6 || ^2.0 || ^3.0
- sentry/sentry: ^3.1 || ^4.0
Requires (Dev)
- coduo/php-matcher: ^6.0.8
- friendsofphp/php-cs-fixer: 3.51.0
- jangregor/phpstan-prophecy: 1.0.0
- phpstan/phpstan: 1.10.59
- phpstan/phpstan-phpunit: 1.3.16
- phpunit/phpunit: ^9.6.7
- symfony/phpunit-bridge: ^6.2.10
- symfony/var-dumper: >4.3
README
这是一个为 Sentry PHP SDK v2、v3 和 v4 提供面包屑支持的 Monolog 处理器。
特性
- 将每个日志记录发送到 Sentry 服务器
- 在批量处理时,将日志记录作为面包屑发送;主报告的日志记录是具有最高日志级别的记录
- 当主日志记录上下文中有异常设置时,将日志与异常一起发送
- 自定义发送到 Sentry 的数据以满足您的需求
- 兼容 Monolog 1、2 和 3
安装
建议通过 composer 安装
# For Sentry PHP SDK v3/v4 composer require bgalati/monolog-sentry-handler # For Sentry PHP SDK v2 composer require bgalati/monolog-sentry-handler:^1.2
基本用法
<?php use BGalati\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 事件提供了最大的上下文。查看 symfony 指南以获取 Monolog 和 symfony 的完整示例
文档
- symfony 指南:提供了一种将此处理器集成到您的应用程序的方法
- 与 Symfony 一起工作的示例
- 扩展点:自定义发送到 Sentry 的数据等
常见问题解答
与官方 Monolog Sentry 处理器相比有何区别?
目前官方 SDK 提供了两种 Monolog 处理器
Sentry\Monolog\Handler
:每个日志记录都成为 Sentry 事件- 根据设置,可能会产生大量噪音。
Sentry\Monolog\BreadcrumbHandler
:将每个日志记录添加到当前事件中作为面包屑- 它不能仅与 Monolog 一起使用:它需要默认集成才能正确工作。
这两个处理器都不立即发送事件。因此,发送 Sentry 事件发生在 PHP 进程终止或显式执行刷新时。
此库提出了不同的处理器
- 它在每个调用时刷新 Sentry 事件:看起来像是 Monolog 处理器的标准
- 当与如
FingersCrossedHandler
之类的缓冲处理器一起使用时,它将日志记录添加为面包屑
关于将其贡献给 Monolog 项目的看法如何?
根据这个 评论,Monolog 项目不接受具有第三方依赖项的新处理器。
在我看来,具有第三方依赖项的新处理器正确的方法是将其作为第三方软件包发布,指定对 monolog 和所需依赖项的依赖项。这允许 Composer 解决所有问题,这实际上更有意义。
贡献
分叉我。
使用 make vendor
安装依赖项。
使用 make tests
运行测试。
更改日志
查看 CHANGELOG.md。