Skip to content

Commit 6d8faea

Browse files
committed
Log when exception received
1 parent 87d17d7 commit 6d8faea

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/Extensions/LoggerExtension.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
namespace RoachPHP\Extensions;
1515

1616
use Psr\Log\LoggerInterface;
17+
use RoachPHP\Events\ExceptionReceived;
1718
use RoachPHP\Events\ItemDropped;
1819
use RoachPHP\Events\ItemScraped;
1920
use RoachPHP\Events\RequestDropped;
@@ -39,6 +40,7 @@ public static function getSubscribedEvents(): array
3940
RequestDropped::NAME => ['onRequestDropped', 100],
4041
ItemScraped::NAME => ['onItemScraped', 100],
4142
ItemDropped::NAME => ['onItemDropped', 100],
43+
ExceptionReceived::NAME => ['onExceptionReceived', 100],
4244
];
4345
}
4446

@@ -81,4 +83,11 @@ public function onItemDropped(ItemDropped $event): void
8183
'reason' => $event->item->getDropReason(),
8284
]);
8385
}
86+
87+
public function onExceptionReceived(ExceptionReceived $event): void
88+
{
89+
$this->logger->warning('Exception received', [
90+
'exception' => $event->exception,
91+
]);
92+
}
8493
}

tests/Extensions/LoggerExtensionTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313

1414
namespace RoachPHP\Tests\Extensions;
1515

16+
use Exception;
1617
use RoachPHP\Core\Run;
18+
use RoachPHP\Events\ExceptionReceived;
1719
use RoachPHP\Events\ItemDropped;
1820
use RoachPHP\Events\ItemScraped;
1921
use RoachPHP\Events\RequestDropped;
@@ -128,6 +130,20 @@ public function testLogWhenItemWasScraped(): void
128130
);
129131
}
130132

133+
public function testLogWhenExceptionWasReceived(): void
134+
{
135+
self::assertFalse(
136+
$this->logger->messageWasLogged('warning', 'Exception received'),
137+
);
138+
139+
$exception = new Exception();
140+
$this->dispatch(new ExceptionReceived($exception), ExceptionReceived::NAME);
141+
142+
self::assertTrue(
143+
$this->logger->messageWasLogged('warning', 'Exception received', ['exception' => $exception]),
144+
);
145+
}
146+
131147
protected function createExtension(): ExtensionInterface
132148
{
133149
$this->logger = new FakeLogger();

0 commit comments

Comments
 (0)