From 89b00f1fdea37d173688a13bede31fe46ab1a6c4 Mon Sep 17 00:00:00 2001 From: Deeka Wong <8337659+huangdijia@users.noreply.github.com> Date: Thu, 6 Nov 2025 08:20:14 +0800 Subject: [PATCH] feat(sentry): upgrade to v4.18.0 and refactor LogsHandler - Upgrade sentry/sentry from ^4.16.0 to ^4.18.0 in root and sentry package - Refactor LogsHandler to use parent class's handle() method by overriding compileAttributes() - Add #[Override] attribute for better type safety - Simplify code by removing duplicate logic and leveraging parent implementation - Improve code maintainability by following DRY principles --- composer.json | 2 +- src/sentry/composer.json | 2 +- src/sentry/src/Monolog/LogsHandler.php | 41 ++++++++------------------ 3 files changed, 14 insertions(+), 31 deletions(-) diff --git a/composer.json b/composer.json index 277801581..76ecfa6ea 100644 --- a/composer.json +++ b/composer.json @@ -32,7 +32,7 @@ "psr/http-factory-implementation": "*", "psy/psysh": "^0.10.0 || ^0.11.0", "ramsey/uuid": "^4.7", - "sentry/sentry": "^4.16.0", + "sentry/sentry": "^4.18.0", "symfony/console": "^5.3 || ^6.0 || ^7.0", "symfony/http-foundation": "^5.3 || ^6.0 || ^7.0", "symfony/polyfill-php84": "^1.33", diff --git a/src/sentry/composer.json b/src/sentry/composer.json index 8d7704b29..b8585a2ae 100644 --- a/src/sentry/composer.json +++ b/src/sentry/composer.json @@ -33,7 +33,7 @@ "hyperf/http-server": "~3.1.0", "hyperf/support": "~3.1.0", "hyperf/tappable": "~3.1.0", - "sentry/sentry": "^4.16.0", + "sentry/sentry": "^4.18.0", "symfony/polyfill-php85": "^1.33" }, "suggest": { diff --git a/src/sentry/src/Monolog/LogsHandler.php b/src/sentry/src/Monolog/LogsHandler.php index f7fb814f6..de6210906 100644 --- a/src/sentry/src/Monolog/LogsHandler.php +++ b/src/sentry/src/Monolog/LogsHandler.php @@ -13,10 +13,9 @@ use Hyperf\Collection\Arr; use Monolog\LogRecord; +use Override; use Sentry\Logs\LogLevel; -use Sentry\Logs\Logs; use Sentry\Monolog\CompatibilityLogLevelTrait; -use Throwable; class LogsHandler extends \Sentry\Monolog\LogsHandler { @@ -35,35 +34,19 @@ public function __construct( } /** - * @param array|LogRecord $record + * @param array|LogRecord $record + * + * @return array */ - public function handle($record): bool + #[Override] + protected function compileAttributes($record): array { - if (! $this->isHandling($record)) { - return false; - } - - // Do not collect logs for exceptions, they should be handled separately by the `Handler` or `captureException` - if ( - isset($record['context']['exception']) - && $record['context']['exception'] instanceof Throwable - ) { - return false; - } - - Logs::getInstance()->aggregator()->add( - self::getSentryLogLevelFromMonologLevel($record['level']), - $record['message'], - [], - array_merge( - Arr::dot($record['context'] ?? [], 'context.'), - Arr::dot($record['extra'] ?? [], 'extra.'), - ['logger.channel' => $record['channel'] ?? ''], - ['logger.group' => $this->group], - ['sentry.origin' => 'auto.log.monolog'] - ) + return array_merge( + Arr::dot($record['context'] ?? [], 'context.'), + Arr::dot($record['extra'] ?? [], 'extra.'), + ['logger.channel' => $record['channel'] ?? ''], + ['logger.group' => $this->group], + ['sentry.origin' => 'auto.log.monolog'] ); - - return $this->bubble === false; } }