-
原版sentry更新比较多,如果需要可以自行 fork 然后修改。
-
新版升级,改动较多
- 使用 class_map 重写
\Sentry\SentrySdk
- 使用 Aspect,拦截单例,
Minbaby\HyperfSentry\Aspect\SingletonHookAspect::class
- 使用 class_map 重写
-
sentry/sdk 依赖的 http 类库报错
报错
Argument 1 passed to swoole_curl_setopt() must be an instance of Swoole\Curl\Handler, null given
vendor/sentry/sentry/src/Transport/HttpTransport.php:110
vendor/symfony/http-client/Response/CurlResponse.php:74
解决方案:
- 编译
swoole
的时候, 需要启用--enable-swoole-curl
参数, - 关闭CURL HOOK,修改
SWOOLE_HOOK_FLAGS
toSWOOLE_HOOK_ALL ^ SWOOLE_HOOK_CURL
说明:
- 从 v4.5.4 版本起,
SWOOLE_HOOK_ALL
包括SWOOLE_HOOK_CURL
(这种是不完全hook,在某些场景下会报错) - 从 v4.6.0 版本起,启用
--enable-swoole-curl
后,SWOOLE_HOOK_ALL
包括SWOOLE_HOOK_NATIVE_CURL
sentry/sdk
类库经过更新迭代,当前版本已经非常现代化了(3.0+)。再辅以 Hyperf
2.0+ 强大的 AOP
功能,除了少部分单例和辅助方法,基本已经不需要特殊修改了。
主版本和 hyperf 保持一致
version | hyperf version | 说明 |
---|---|---|
0.1.* | 1.1.* | - |
2.0.* | 2.0.* | - |
2.2.* | >=2.1.* | 本次更新移除 hyperf 包依赖 |
- 配置文件
发布: php bin/hyperf.php vendor:publish minbaby/hyperf-sentry
然后在 .env
中添加 SENTRY_DSN=
- 注册
SentryExceptionHandler
return [
'handler' => [
'http' => [
Minbaby\HyperfSentry\SentryExceptionHandler::class,
App\Exception\Handler\AppExceptionHandler::class,
],
],
];
- 执行
php bin/hyperf.php sentry:test