diff --git a/src/Monolog/BreadcrumbHandler.php b/src/Monolog/BreadcrumbHandler.php index f01ce3ace..e15f6103f 100644 --- a/src/Monolog/BreadcrumbHandler.php +++ b/src/Monolog/BreadcrumbHandler.php @@ -54,7 +54,7 @@ protected function write(array $record): void $this->getBreadcrumbType($record['level']), $record['channel'], $record['message'], - $record['extra'] ?? [], + ($record['context'] ?? []) + ($record['extra'] ?? []), $record['datetime']->getTimestamp() ); diff --git a/tests/Monolog/BreadcrumbHandlerTest.php b/tests/Monolog/BreadcrumbHandlerTest.php index 5388a0ee3..54efe5813 100644 --- a/tests/Monolog/BreadcrumbHandlerTest.php +++ b/tests/Monolog/BreadcrumbHandlerTest.php @@ -35,6 +35,9 @@ public function testHandle(array $record, Breadcrumb $expectedBreadcrumb): void $handler->handle($record); } + /** + * @return iterable, Breadcrumb}> + */ public function handleDataProvider(): iterable { $defaultData = [ @@ -56,9 +59,50 @@ public function handleDataProvider(): iterable $defaultData['datetime']->getTimestamp() ); - yield [ - $defaultData, - $defaultBreadcrumb, + $levelsToBeTested = [ + Logger::DEBUG => Breadcrumb::LEVEL_DEBUG, + Logger::INFO => Breadcrumb::LEVEL_INFO, + Logger::NOTICE => Breadcrumb::LEVEL_INFO, + Logger::WARNING => Breadcrumb::LEVEL_WARNING, + ]; + + foreach ($levelsToBeTested as $loggerLevel => $breadcrumbLevel) { + yield 'with level ' . Logger::getLevelName($loggerLevel) => [ + ['level' => $loggerLevel] + $defaultData, + $defaultBreadcrumb->withLevel($breadcrumbLevel), + ]; + } + + yield 'with level ERROR' => [ + ['level' => Logger::ERROR] + $defaultData, + $defaultBreadcrumb->withLevel(Breadcrumb::LEVEL_ERROR) + ->withType(Breadcrumb::TYPE_ERROR), + ]; + + yield 'with level ALERT' => [ + ['level' => Logger::ALERT] + $defaultData, + $defaultBreadcrumb->withLevel(Breadcrumb::LEVEL_FATAL) + ->withType(Breadcrumb::TYPE_ERROR), + ]; + + yield 'with context' => [ + ['context' => ['foo' => 'bar']] + $defaultData, + $defaultBreadcrumb->withMetadata('foo', 'bar'), + ]; + + yield 'with extra' => [ + ['extra' => ['foo' => 'bar']] + $defaultData, + $defaultBreadcrumb->withMetadata('foo', 'bar'), + ]; + + yield 'with context + extra' => [ + [ + 'context' => ['foo' => 'bar', 'context' => 'baz'], + 'extra' => ['foo' => 'baz', 'extra' => 'baz'], + ] + $defaultData, + $defaultBreadcrumb->withMetadata('foo', 'bar') + ->withMetadata('context', 'baz') + ->withMetadata('extra', 'baz'), ]; } }