forked from paysera/lib-logging-extra-bundle
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGroupExceptionsProcessor.php
More file actions
40 lines (31 loc) · 1.04 KB
/
GroupExceptionsProcessor.php
File metadata and controls
40 lines (31 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
declare(strict_types=1);
namespace Paysera\LoggingExtraBundle\Service\Processor;
use Monolog\LogRecord;
use Monolog\Processor\ProcessorInterface;
use Sentry\SentrySdk;
use Sentry\State\Scope;
class GroupExceptionsProcessor implements ProcessorInterface
{
private array $exceptionsClassesToGroup;
public function __construct(array $exceptionsClassesToGroup)
{
$this->exceptionsClassesToGroup = array_flip($exceptionsClassesToGroup);
}
public function __invoke(LogRecord $record): LogRecord
{
if (!isset($record['context']['exception'])) {
return $record;
}
$exception = $record['context']['exception'];
$exceptionClass = get_class($exception);
if (isset($this->exceptionsClassesToGroup[$exceptionClass])) {
SentrySdk::getCurrentHub()
->configureScope(function (Scope $scope) use ($exceptionClass) {
$scope->setFingerprint([$exceptionClass]);
})
;
}
return $record;
}
}