forked from php-enqueue/enqueue-dev
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLogExtension.php
More file actions
68 lines (56 loc) · 2.39 KB
/
LogExtension.php
File metadata and controls
68 lines (56 loc) · 2.39 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
namespace Enqueue\Consumption\Extension;
use Enqueue\Consumption\Context\End;
use Enqueue\Consumption\Context\MessageReceived;
use Enqueue\Consumption\Context\PostMessageReceived;
use Enqueue\Consumption\Context\Start;
use Enqueue\Consumption\EndExtensionInterface;
use Enqueue\Consumption\MessageReceivedExtensionInterface;
use Enqueue\Consumption\PostMessageReceivedExtensionInterface;
use Enqueue\Consumption\Result;
use Enqueue\Consumption\StartExtensionInterface;
use Enqueue\Util\Stringify;
use Psr\Log\LogLevel;
class LogExtension implements StartExtensionInterface, MessageReceivedExtensionInterface, PostMessageReceivedExtensionInterface, EndExtensionInterface
{
public function onStart(Start $context): void
{
$context->getLogger()->debug('Consumption has started');
}
public function onEnd(End $context): void
{
$context->getLogger()->debug('Consumption has ended');
}
public function onMessageReceived(MessageReceived $context): void
{
$message = $context->getMessage();
$context->getLogger()->debug('Received from {queueName}', [
'queueName' => $context->getConsumer()->getQueue()->getQueueName(),
'redelivered' => $message->isRedelivered(),
'body' => Stringify::that($message->getBody()),
'properties' => Stringify::that($message->getProperties()),
'headers' => Stringify::that($message->getHeaders()),
]);
}
public function onPostMessageReceived(PostMessageReceived $context): void
{
$message = $context->getMessage();
$queue = $context->getConsumer()->getQueue();
$result = $context->getResult();
$logMessage = 'Processed from {queueName}';
$reason = '';
if ($result instanceof Result && $result->getReason()) {
$reason = $result->getReason();
}
$logContext = [
'result' => str_replace('enqueue.', '', $result),
'reason' => $reason,
'queueName' => $queue->getQueueName(),
'body' => Stringify::that($message->getBody()),
'properties' => Stringify::that($message->getProperties()),
'headers' => Stringify::that($message->getHeaders()),
];
$logLevel = Result::REJECT == ((string) $result) ? LogLevel::ERROR : LogLevel::INFO;
$context->getLogger()->log($logLevel, $logMessage, $logContext);
}
}