1 | <?php |
||
2 | |||
3 | declare(strict_types=1); |
||
4 | |||
5 | namespace ResqueLogger; |
||
6 | |||
7 | use Psr\EventDispatcher\ListenerProviderInterface; |
||
8 | use Psr\Log\LoggerInterface; |
||
9 | use Resque\Interfaces\PayloadableTask; |
||
10 | use Resque\Interfaces\Serializer; |
||
11 | use Resque\JsonSerializer; |
||
12 | use Resque\Tasks\AfterEnqueue; |
||
13 | use Resque\Tasks\AfterUserJobPerform; |
||
14 | use Resque\Tasks\BeforeEnqueue; |
||
15 | use Resque\Tasks\BeforeJobPop; |
||
16 | use Resque\Tasks\BeforeJobPush; |
||
17 | use Resque\Tasks\BeforeSignalsRegister; |
||
18 | use Resque\Tasks\BeforeUserJobPerform; |
||
19 | use Resque\Tasks\FailedUserJobPerform; |
||
20 | use Resque\Tasks\ForkFailed; |
||
21 | use Resque\Tasks\JobFailed; |
||
22 | use Resque\Tasks\ParentWaiting; |
||
23 | use Resque\Tasks\UnknownChildFailure; |
||
24 | use Resque\Tasks\WorkerDoneWorking; |
||
25 | use Resque\Tasks\WorkerIdle; |
||
26 | use Resque\Tasks\WorkerRegistering; |
||
27 | use Resque\Tasks\WorkerStartup; |
||
28 | use Resque\Tasks\WorkerUnregistering; |
||
29 | |||
30 | class ResqueLogger |
||
31 | { |
||
32 | private $logger; |
||
33 | private $listenerProvider; |
||
34 | private $serializer; |
||
35 | |||
36 | private $taskToCommandMap = [ |
||
37 | AfterEnqueue::class => 'info', |
||
38 | AfterUserJobPerform::class => 'notice', |
||
39 | BeforeEnqueue::class => 'info', |
||
40 | BeforeJobPop::class => 'debug', |
||
41 | BeforeJobPush::class => 'debug', |
||
42 | BeforeSignalsRegister::class => 'info', |
||
43 | BeforeUserJobPerform::class => 'notice', |
||
44 | FailedUserJobPerform::class => 'error', |
||
45 | ForkFailed::class => 'error', |
||
46 | JobFailed::class => 'error', |
||
47 | ParentWaiting::class => 'debug', |
||
48 | UnknownChildFailure::class => 'critical', |
||
49 | WorkerDoneWorking::class => 'info', |
||
50 | WorkerIdle::class => 'debug', |
||
51 | WorkerRegistering::class => 'info', |
||
52 | WorkerStartup::class => 'info', |
||
53 | WorkerUnregistering::class => 'info', |
||
54 | ]; |
||
55 | |||
56 | 1 | public function __construct(LoggerInterface $logger, ListenerProviderInterface $listenerProvider) |
|
57 | { |
||
58 | 1 | $this->logger = $logger; |
|
59 | 1 | $this->listenerProvider = $listenerProvider; |
|
60 | 1 | $this->serializer = new JsonSerializer(); |
|
61 | 1 | } |
|
62 | |||
63 | 1 | public function setLogLevelForTask(string $taskClassName, string $logLevel): void |
|
64 | { |
||
65 | 1 | $this->taskToCommandMap[$taskClassName] = $logLevel; |
|
66 | 1 | } |
|
67 | |||
68 | 1 | public function setSerializer(Serializer $serializer): void |
|
69 | { |
||
70 | 1 | $this->serializer = $serializer; |
|
71 | 1 | } |
|
72 | |||
73 | 1 | public function register(): void |
|
74 | { |
||
75 | 1 | $provider = $this->listenerProvider; |
|
76 | $provider->addListener(function (AfterEnqueue $task) { |
||
0 ignored issues
–
show
|
|||
77 | 1 | $this->logTask($task); |
|
78 | 1 | }); |
|
79 | $provider->addListener(function (AfterUserJobPerform $task) { |
||
80 | 1 | $this->logTask($task); |
|
81 | 1 | }); |
|
82 | $provider->addListener(function (BeforeEnqueue $task) { |
||
83 | 1 | $this->logTask($task); |
|
84 | 1 | }); |
|
85 | $provider->addListener(function (BeforeJobPop $task) { |
||
86 | 1 | $this->logTask($task); |
|
87 | 1 | }); |
|
88 | $provider->addListener(function (BeforeJobPush $task) { |
||
89 | 1 | $this->logTask($task); |
|
90 | 1 | }); |
|
91 | $provider->addListener(function (BeforeSignalsRegister $task) { |
||
92 | 1 | $this->logTask($task); |
|
93 | 1 | }); |
|
94 | $provider->addListener(function (BeforeUserJobPerform $task) { |
||
95 | 1 | $this->logTask($task); |
|
96 | 1 | }); |
|
97 | $provider->addListener(function (FailedUserJobPerform $task) { |
||
98 | 1 | $this->logTask($task); |
|
99 | 1 | }); |
|
100 | $provider->addListener(function (ForkFailed $task) { |
||
101 | 1 | $this->logTask($task); |
|
102 | 1 | }); |
|
103 | $provider->addListener(function (JobFailed $task) { |
||
104 | 1 | $this->logTask($task); |
|
105 | 1 | }); |
|
106 | $provider->addListener(function (ParentWaiting $task) { |
||
107 | 1 | $this->logTask($task); |
|
108 | 1 | }); |
|
109 | $provider->addListener(function (UnknownChildFailure $task) { |
||
110 | 1 | $this->logTask($task); |
|
111 | 1 | }); |
|
112 | $provider->addListener(function (WorkerDoneWorking $task) { |
||
113 | 1 | $this->logTask($task); |
|
114 | 1 | }); |
|
115 | $provider->addListener(function (WorkerIdle $task) { |
||
116 | 1 | $this->logTask($task); |
|
117 | 1 | }); |
|
118 | $provider->addListener(function (WorkerRegistering $task) { |
||
119 | 1 | $this->logTask($task); |
|
120 | 1 | }); |
|
121 | $provider->addListener(function (WorkerStartup $task) { |
||
122 | 1 | $this->logTask($task); |
|
123 | 1 | }); |
|
124 | $provider->addListener(function (WorkerUnregistering $task) { |
||
125 | 1 | $this->logTask($task); |
|
126 | 1 | }); |
|
127 | 1 | } |
|
128 | |||
129 | 1 | private function logTask(PayloadableTask $task): void |
|
130 | { |
||
131 | 1 | $taskClassName = get_class($task); |
|
132 | 1 | $command = $this->taskToCommandMap[$taskClassName]; |
|
133 | 1 | $message = $this->buildMessage($taskClassName, $task); |
|
134 | 1 | $this->logger->$command($message); |
|
135 | 1 | } |
|
136 | |||
137 | 1 | private function buildMessage(string $taskClassName, PayloadableTask $task): string |
|
138 | { |
||
139 | 1 | return "{$taskClassName} - payload: {$this->serializer->serialize($task->getPayload())}"; |
|
140 | } |
||
141 | } |
||
142 |
This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.
This is most likely a typographical error or the method has been renamed.