From efafab352f40643be4a089c0bf61661721604ab1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 13 Dec 2025 06:58:56 +0000 Subject: [PATCH 1/4] Initial plan From 86ae5c016b501deea50803de379694485af2e37f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 13 Dec 2025 07:08:44 +0000 Subject: [PATCH 2/4] fix(telescope): auto-register RequestHandledListener and SetRequestLifecycleListener The listeners were missing from ConfigProvider causing exceptions and non-200 status codes to not be captured after upgrading to v3.1.76. Users had to manually add these listeners which was error-prone. Changes: - Add RequestHandledListener and SetRequestLifecycleListener to ConfigProvider - Update documentation to reflect automatic listener registration - Add test to verify listeners are properly registered Co-authored-by: huangdijia <8337659+huangdijia@users.noreply.github.com> --- docs/en/components/telescope.md | 36 ++++--------------------- docs/zh-cn/components/telescope.md | 36 ++++--------------------- docs/zh-hk/components/telescope.md | 36 ++++--------------------- docs/zh-tw/components/telescope.md | 36 ++++--------------------- src/telescope/README.md | 18 ++----------- src/telescope/src/ConfigProvider.php | 2 ++ tests/Telescope/ConfigProviderTest.php | 37 ++++++++++++++++++++++++++ 7 files changed, 61 insertions(+), 140 deletions(-) create mode 100644 tests/Telescope/ConfigProviderTest.php diff --git a/docs/en/components/telescope.md b/docs/en/components/telescope.md index 5915fb852..515c79531 100644 --- a/docs/en/components/telescope.md +++ b/docs/en/components/telescope.md @@ -34,39 +34,11 @@ php bin/hyperf.php migrate ## Usage -> Choose either the listener or middleware +### Middleware (Optional for gRPC) -### Request Listener +Add the middleware in the `config/autoload/middlewares.php` configuration file -Add the listener in the `config/autoload/listeners.php` configuration file - -```php - [ - FriendsOfHyperf\Telescope\Middleware\TelescopeMiddleware::class, - ], -]; -``` - -To record gRPC requests, use the `grpc` middleware +To enable additional gRPC functionality, use the `grpc` middleware ```php Note: Request tracking is automatically enabled via the RequestHandledListener. The TelescopeMiddleware is only needed for additional gRPC-specific functionality. + ## View Dashboard `http://127.0.0.1:9501/telescope` diff --git a/docs/zh-cn/components/telescope.md b/docs/zh-cn/components/telescope.md index b84da929b..471df3478 100644 --- a/docs/zh-cn/components/telescope.md +++ b/docs/zh-cn/components/telescope.md @@ -34,39 +34,11 @@ php bin/hyperf.php migrate ## 使用 -> 监听器和中间件,二选一即可 +### 中间件(可选,仅用于gRPC) -### 请求监听器 +在 `config/autoload/middlewares.php`配置文件加上中间件 -在 `config/autoload/listeners.php`配置文件添加监听器 - -```php - [ - FriendsOfHyperf\Telescope\Middleware\TelescopeMiddleware::class, - ], -]; -``` - -如需记录gRPC请求,请使用`grpc`中间件 +如需gRPC的额外功能,请使用`grpc`中间件 ```php 注意: 请求跟踪功能已通过 RequestHandledListener 自动启用。TelescopeMiddleware 仅用于 gRPC 的额外功能。 + ## 查看仪表板 `http://127.0.0.1:9501/telescope` diff --git a/docs/zh-hk/components/telescope.md b/docs/zh-hk/components/telescope.md index a4142b194..ce2cf6f5d 100644 --- a/docs/zh-hk/components/telescope.md +++ b/docs/zh-hk/components/telescope.md @@ -34,39 +34,11 @@ php bin/hyperf.php migrate ## 使用 -> 監聽器和中間件,二選一即可 +### 中間件(可選,僅用於gRPC) -### 請求監聽器 +在 `config/autoload/middlewares.php`配置文件加上中間件 -在 `config/autoload/listeners.php`配置文件添加監聽器 - -```php - [ - FriendsOfHyperf\Telescope\Middleware\TelescopeMiddleware::class, - ], -]; -``` - -如需記錄gRPC請求,請使用`grpc`中間件 +如需gRPC的額外功能,請使用`grpc`中間件 ```php 注意: 請求追蹤功能已通過 RequestHandledListener 自動啟用。TelescopeMiddleware 僅用於 gRPC 的額外功能。 + ## 查看儀表板 `http://127.0.0.1:9501/telescope` diff --git a/docs/zh-tw/components/telescope.md b/docs/zh-tw/components/telescope.md index eb47a7a00..f46f20d92 100644 --- a/docs/zh-tw/components/telescope.md +++ b/docs/zh-tw/components/telescope.md @@ -34,39 +34,11 @@ php bin/hyperf.php migrate ## 使用 -> 監聽器和中介軟體,二選一即可 +### 中介軟體(可選,僅用於gRPC) -### 請求監聽器 +在 `config/autoload/middlewares.php`配置檔案加上中介軟體 -在 `config/autoload/listeners.php`配置檔案新增監聽器 - -```php - [ - FriendsOfHyperf\Telescope\Middleware\TelescopeMiddleware::class, - ], -]; -``` - -如需記錄gRPC請求,請使用`grpc`中介軟體 +如需gRPC的額外功能,請使用`grpc`中介軟體 ```php 注意: 請求追蹤功能已透過 RequestHandledListener 自動啟用。TelescopeMiddleware 僅用於 gRPC 的額外功能。 + ## 檢視儀表板 `http://127.0.0.1:9501/telescope` diff --git a/src/telescope/README.md b/src/telescope/README.md index 06c61bebe..580607c2d 100644 --- a/src/telescope/README.md +++ b/src/telescope/README.md @@ -39,21 +39,7 @@ php bin/hyperf.php vendor:publish friendsofhyperf/telescope php bin/hyperf.php migrate ``` -## Add Listener - -```php - TelescopeMiddleware or RequestHandledListener, you can choose one of them. +> Note: Request tracking is automatically enabled via the RequestHandledListener. The TelescopeMiddleware is only needed for additional gRPC-specific functionality. ## Add env diff --git a/src/telescope/src/ConfigProvider.php b/src/telescope/src/ConfigProvider.php index 8d908b7c5..99ff179c7 100644 --- a/src/telescope/src/ConfigProvider.php +++ b/src/telescope/src/ConfigProvider.php @@ -48,6 +48,8 @@ public function __invoke(): array Listener\FetchRecordingOnBootListener::class, Listener\RedisCommandExecutedListener::class, Listener\RegisterRoutesListener::class => -1, + Listener\RequestHandledListener::class, + Listener\SetRequestLifecycleListener::class, ], 'publish' => [ [ diff --git a/tests/Telescope/ConfigProviderTest.php b/tests/Telescope/ConfigProviderTest.php new file mode 100644 index 000000000..2be42da15 --- /dev/null +++ b/tests/Telescope/ConfigProviderTest.php @@ -0,0 +1,37 @@ +toHaveKey('listeners') + ->and($config['listeners'])->toBeArray() + ->and($config['listeners'])->toContain( + \FriendsOfHyperf\Telescope\Listener\RequestHandledListener::class, + \FriendsOfHyperf\Telescope\Listener\SetRequestLifecycleListener::class, + \FriendsOfHyperf\Telescope\Listener\ExceptionHandlerListener::class, + \FriendsOfHyperf\Telescope\Listener\CommandListener::class, + \FriendsOfHyperf\Telescope\Listener\CronEventListener::class, + \FriendsOfHyperf\Telescope\Listener\DbQueryListener::class, + \FriendsOfHyperf\Telescope\Listener\FetchRecordingOnBootListener::class, + \FriendsOfHyperf\Telescope\Listener\RedisCommandExecutedListener::class + ); +}); + +test('ConfigProvider includes RegisterRoutesListener with priority', function () { + $configProvider = new ConfigProvider(); + $config = $configProvider(); + + expect($config['listeners'])->toHaveKey(\FriendsOfHyperf\Telescope\Listener\RegisterRoutesListener::class) + ->and($config['listeners'][\FriendsOfHyperf\Telescope\Listener\RegisterRoutesListener::class])->toBe(-1); +}); From e2bcf9433f3aa8c548683e90515a950b6f5f078b Mon Sep 17 00:00:00 2001 From: Deeka Wong <8337659+huangdijia@users.noreply.github.com> Date: Sat, 13 Dec 2025 15:12:18 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix(telescope):=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E7=B1=BB=E5=90=8D=E4=B8=AD=E7=9A=84=E5=8F=8D=E6=96=9C=E6=9D=A0?= =?UTF-8?q?=E4=BB=A5=E7=AE=80=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/Telescope/ConfigProviderTest.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/Telescope/ConfigProviderTest.php b/tests/Telescope/ConfigProviderTest.php index 2be42da15..947f4dade 100644 --- a/tests/Telescope/ConfigProviderTest.php +++ b/tests/Telescope/ConfigProviderTest.php @@ -17,14 +17,14 @@ expect($config)->toHaveKey('listeners') ->and($config['listeners'])->toBeArray() ->and($config['listeners'])->toContain( - \FriendsOfHyperf\Telescope\Listener\RequestHandledListener::class, - \FriendsOfHyperf\Telescope\Listener\SetRequestLifecycleListener::class, - \FriendsOfHyperf\Telescope\Listener\ExceptionHandlerListener::class, - \FriendsOfHyperf\Telescope\Listener\CommandListener::class, - \FriendsOfHyperf\Telescope\Listener\CronEventListener::class, - \FriendsOfHyperf\Telescope\Listener\DbQueryListener::class, - \FriendsOfHyperf\Telescope\Listener\FetchRecordingOnBootListener::class, - \FriendsOfHyperf\Telescope\Listener\RedisCommandExecutedListener::class + FriendsOfHyperf\Telescope\Listener\RequestHandledListener::class, + FriendsOfHyperf\Telescope\Listener\SetRequestLifecycleListener::class, + FriendsOfHyperf\Telescope\Listener\ExceptionHandlerListener::class, + FriendsOfHyperf\Telescope\Listener\CommandListener::class, + FriendsOfHyperf\Telescope\Listener\CronEventListener::class, + FriendsOfHyperf\Telescope\Listener\DbQueryListener::class, + FriendsOfHyperf\Telescope\Listener\FetchRecordingOnBootListener::class, + FriendsOfHyperf\Telescope\Listener\RedisCommandExecutedListener::class ); }); @@ -32,6 +32,6 @@ $configProvider = new ConfigProvider(); $config = $configProvider(); - expect($config['listeners'])->toHaveKey(\FriendsOfHyperf\Telescope\Listener\RegisterRoutesListener::class) - ->and($config['listeners'][\FriendsOfHyperf\Telescope\Listener\RegisterRoutesListener::class])->toBe(-1); + expect($config['listeners'])->toHaveKey(FriendsOfHyperf\Telescope\Listener\RegisterRoutesListener::class) + ->and($config['listeners'][FriendsOfHyperf\Telescope\Listener\RegisterRoutesListener::class])->toBe(-1); }); From 7d2bf73919d6aadfbc675d6c4b41ba4e3e3bc77b Mon Sep 17 00:00:00 2001 From: Deeka Wong <8337659+huangdijia@users.noreply.github.com> Date: Sat, 13 Dec 2025 15:13:40 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=88=A0=E9=99=A4=20ConfigProviderTest.php?= =?UTF-8?q?=20=E6=B5=8B=E8=AF=95=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/Telescope/ConfigProviderTest.php | 37 -------------------------- 1 file changed, 37 deletions(-) delete mode 100644 tests/Telescope/ConfigProviderTest.php diff --git a/tests/Telescope/ConfigProviderTest.php b/tests/Telescope/ConfigProviderTest.php deleted file mode 100644 index 947f4dade..000000000 --- a/tests/Telescope/ConfigProviderTest.php +++ /dev/null @@ -1,37 +0,0 @@ -toHaveKey('listeners') - ->and($config['listeners'])->toBeArray() - ->and($config['listeners'])->toContain( - FriendsOfHyperf\Telescope\Listener\RequestHandledListener::class, - FriendsOfHyperf\Telescope\Listener\SetRequestLifecycleListener::class, - FriendsOfHyperf\Telescope\Listener\ExceptionHandlerListener::class, - FriendsOfHyperf\Telescope\Listener\CommandListener::class, - FriendsOfHyperf\Telescope\Listener\CronEventListener::class, - FriendsOfHyperf\Telescope\Listener\DbQueryListener::class, - FriendsOfHyperf\Telescope\Listener\FetchRecordingOnBootListener::class, - FriendsOfHyperf\Telescope\Listener\RedisCommandExecutedListener::class - ); -}); - -test('ConfigProvider includes RegisterRoutesListener with priority', function () { - $configProvider = new ConfigProvider(); - $config = $configProvider(); - - expect($config['listeners'])->toHaveKey(FriendsOfHyperf\Telescope\Listener\RegisterRoutesListener::class) - ->and($config['listeners'][FriendsOfHyperf\Telescope\Listener\RegisterRoutesListener::class])->toBe(-1); -});