Issues (1)

src/ResqueLogger.php (1 issue)

Labels
Severity
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
The method addListener() does not exist on Psr\EventDispatcher\ListenerProviderInterface. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

76
        $provider->/** @scrutinizer ignore-call */ 
77
                   addListener(function (AfterEnqueue $task) {

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.

Loading history...
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