1 | <?php |
||
2 | |||
3 | /** |
||
4 | * Bluz Framework Component |
||
5 | * |
||
6 | * @copyright Bluz PHP Team |
||
7 | * @link https://github.com/bluzphp/framework |
||
8 | */ |
||
9 | |||
10 | declare(strict_types=1); |
||
11 | |||
12 | namespace Bluz\Logger; |
||
13 | |||
14 | use Bluz\Common\Options; |
||
15 | use Psr\Log\AbstractLogger; |
||
0 ignored issues
–
show
|
|||
16 | |||
17 | /** |
||
18 | * Logger |
||
19 | * |
||
20 | * @package Bluz\Logger |
||
21 | * @author Taras Omelianenko <[email protected]> |
||
22 | * @link https://github.com/bluzphp/framework/wiki/Logger |
||
23 | */ |
||
24 | class Logger extends AbstractLogger |
||
25 | { |
||
26 | use Options; |
||
27 | |||
28 | /** |
||
29 | * @var float start time |
||
30 | */ |
||
31 | protected $startTime; |
||
32 | |||
33 | /** |
||
34 | * @var float part time |
||
35 | */ |
||
36 | protected $timer; |
||
37 | |||
38 | /** |
||
39 | * @var integer |
||
40 | */ |
||
41 | protected $memory = 0; |
||
42 | |||
43 | /** |
||
44 | * @var array list of alerts |
||
45 | */ |
||
46 | protected $alert = []; |
||
47 | |||
48 | /** |
||
49 | * @var array list of critical |
||
50 | */ |
||
51 | protected $critical = []; |
||
52 | |||
53 | /** |
||
54 | * @var array list of debug messages |
||
55 | */ |
||
56 | protected $debug = []; |
||
57 | |||
58 | /** |
||
59 | * @var array list of emergency |
||
60 | */ |
||
61 | protected $emergency = []; |
||
62 | |||
63 | /** |
||
64 | * @var array list of errors |
||
65 | */ |
||
66 | protected $error = []; |
||
67 | |||
68 | /** |
||
69 | * @var array list of info |
||
70 | */ |
||
71 | protected $info = []; |
||
72 | |||
73 | /** |
||
74 | * @var array list of notices |
||
75 | */ |
||
76 | protected $notice = []; |
||
77 | |||
78 | /** |
||
79 | * @var array list of warnings |
||
80 | */ |
||
81 | protected $warning = []; |
||
82 | |||
83 | /** |
||
84 | * Interpolates context values into the message placeholders |
||
85 | * |
||
86 | * @param string $message |
||
87 | * @param array $context |
||
88 | * |
||
89 | * @return string |
||
90 | */ |
||
91 | 587 | protected function interpolate(string $message, array $context = []): string |
|
92 | { |
||
93 | // build a replacement array with braces around the context keys |
||
94 | 587 | $replace = []; |
|
95 | 587 | foreach ($context as $key => $val) { |
|
96 | $replace['{' . $key . '}'] = $val; |
||
97 | } |
||
98 | |||
99 | // interpolate replacement values into the message and return |
||
100 | 587 | return strtr($message, $replace); |
|
101 | } |
||
102 | |||
103 | /** |
||
104 | * Log info message |
||
105 | * |
||
106 | * @param string $message |
||
107 | * @param array $context |
||
108 | * |
||
109 | * @return void |
||
110 | */ |
||
111 | 587 | public function info($message, array $context = []): void |
|
112 | { |
||
113 | 587 | $message = $this->interpolate($message, $context); |
|
114 | |||
115 | 587 | if (!$this->startTime) { |
|
116 | 587 | $this->startTime = $this->timer = $_SERVER['REQUEST_TIME_FLOAT'] ?? microtime(true); |
|
0 ignored issues
–
show
It seems like
$this->timer = $_SERVER[...AT'] ?? microtime(true) can also be of type string . However, the property $startTime is declared as type double . Maybe add an additional type check?
Our type inference engine has found a suspicous assignment of a value to a property. This check raises an issue when a value that can be of a mixed type is assigned to a property that is type hinted more strictly. For example, imagine you have a variable Either this assignment is in error or a type check should be added for that assignment. class Id
{
public $id;
public function __construct($id)
{
$this->id = $id;
}
}
class Account
{
/** @var Id $id */
public $id;
}
$account_id = false;
if (starsAreRight()) {
$account_id = new Id(42);
}
$account = new Account();
if ($account instanceof Id)
{
$account->id = $account_id;
}
![]() It seems like
$_SERVER['REQUEST_TIME_FLOAT'] ?? microtime(true) can also be of type string . However, the property $timer is declared as type double . Maybe add an additional type check?
Our type inference engine has found a suspicous assignment of a value to a property. This check raises an issue when a value that can be of a mixed type is assigned to a property that is type hinted more strictly. For example, imagine you have a variable Either this assignment is in error or a type check should be added for that assignment. class Id
{
public $id;
public function __construct($id)
{
$this->id = $id;
}
}
class Account
{
/** @var Id $id */
public $id;
}
$account_id = false;
if (starsAreRight()) {
$account_id = new Id(42);
}
$account = new Account();
if ($account instanceof Id)
{
$account->id = $account_id;
}
![]() |
|||
117 | } |
||
118 | |||
119 | 587 | $curTimer = microtime(true); |
|
120 | 587 | $curMemory = memory_get_usage(); |
|
121 | |||
122 | 587 | $key = sprintf( |
|
123 | 587 | '%f :: %f :: %d', |
|
124 | 587 | $curTimer - $this->startTime, |
|
125 | 587 | $curTimer - $this->timer, |
|
126 | 587 | $curMemory - $this->memory |
|
127 | ); |
||
128 | |||
129 | 587 | $this->info[$key] = $message; |
|
130 | |||
131 | 587 | $this->timer = $curTimer; |
|
132 | 587 | $this->memory = $curMemory; |
|
133 | 587 | } |
|
134 | |||
135 | /** |
||
136 | * Logs with an arbitrary level |
||
137 | * |
||
138 | * @param mixed $level |
||
139 | * @param string $message |
||
140 | * @param array $context |
||
141 | * |
||
142 | * @return void |
||
143 | */ |
||
144 | 6 | public function log($level, $message, array $context = []): void |
|
145 | { |
||
146 | 6 | $this->{$level}[] = $this->interpolate($message, $context); |
|
147 | 6 | } |
|
148 | |||
149 | /** |
||
150 | * Get logs records by level |
||
151 | * |
||
152 | * @param $level |
||
153 | * |
||
154 | * @return array |
||
155 | */ |
||
156 | 1 | public function get($level): array |
|
157 | { |
||
158 | 1 | return $this->{$level}; |
|
159 | } |
||
160 | } |
||
161 |
The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g.
excluded_paths: ["lib/*"]
, you can move it to the dependency path list as follows:For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths