Skip to content

Commit 244fee7

Browse files
committed
Fix backward compatibility code static test failures
1 parent 562a780 commit 244fee7

File tree

6 files changed

+141
-296
lines changed

6 files changed

+141
-296
lines changed

src/App/Logger/Formatter/JsonErrorFormatter.php

Lines changed: 78 additions & 153 deletions
Original file line numberDiff line numberDiff line change
@@ -12,188 +12,113 @@
1212
use Magento\MagentoCloud\Filesystem\FileSystemException;
1313
use Monolog\Formatter\JsonFormatter;
1414

15-
if (\Monolog\Logger::API == 3) {
15+
/**
16+
*
17+
* Formatter for log messages for cloud.error.log
18+
*/
19+
class JsonErrorFormatter extends JsonFormatter
20+
{
1621
/**
17-
*
18-
* Formatter for log messages for cloud.error.log
22+
* @var ErrorInfo
1923
*/
20-
class JsonErrorFormatter extends JsonFormatter
21-
{
22-
/**
23-
* @var ErrorInfo
24-
*/
25-
private $errorInfo;
24+
private $errorInfo;
2625

27-
/**
28-
* @var ReaderInterface
29-
*/
30-
private $reader;
31-
32-
/**
33-
* @param ErrorInfo $errorInfo
34-
* @param ReaderInterface $reader
35-
* @param 1|2 $batchMode
36-
* @param bool $appendNewline
37-
*/
38-
public function __construct(
39-
ErrorInfo $errorInfo,
40-
ReaderInterface $reader,
41-
$batchMode = self::BATCH_MODE_JSON,
42-
$appendNewline = true
43-
) {
44-
parent::__construct($batchMode, $appendNewline);
26+
/**
27+
* @var ReaderInterface
28+
*/
29+
private $reader;
4530

46-
$this->errorInfo = $errorInfo;
47-
$this->reader = $reader;
48-
}
31+
/**
32+
* @param ErrorInfo $errorInfo
33+
* @param ReaderInterface $reader
34+
* @param 1|2 $batchMode
35+
* @param bool $appendNewline
36+
*/
37+
public function __construct(
38+
ErrorInfo $errorInfo,
39+
ReaderInterface $reader,
40+
$batchMode = self::BATCH_MODE_JSON,
41+
$appendNewline = true
42+
) {
43+
parent::__construct($batchMode, $appendNewline);
44+
45+
$this->errorInfo = $errorInfo;
46+
$this->reader = $reader;
47+
}
4948

50-
/**
51-
* Format record, skip logging if ErrorCode isn't passed.
52-
*
53-
* {@inheritDoc}
54-
*/
55-
public function format(\Monolog\LogRecord $record): string
56-
{
49+
/**
50+
* Format record, skip logging if ErrorCode isn't passed.
51+
*
52+
* {@inheritDoc}
53+
*/
54+
public function format(\Monolog\LogRecord|array $record): string
55+
{
56+
// Older Monolog versions.
57+
if (is_array($record)) {
5758
try {
58-
if (!isset($record->context['errorCode'])) {
59+
if (!isset($record['context']['errorCode'])) {
5960
return '';
6061
}
61-
62+
6263
$loggedErrors = $this->reader->read();
63-
64-
if (isset($loggedErrors[$record->context['errorCode']])) {
64+
65+
if (isset($loggedErrors[$record['context']['errorCode']])) {
6566
return '';
6667
}
67-
return $this->toJson($this->formatLog($record)) . PHP_EOL;
68+
69+
return parent::format($this->formatLog($record));
6870
} catch (\Exception $exception) {
6971
return '';
7072
}
71-
}
72-
73-
/**
74-
* Returns error info data based on errorCode.
75-
*
76-
* @param array $record
77-
* @return array
78-
* @throws FileSystemException
79-
*/
80-
private function formatLog(\Monolog\LogRecord $record): array
81-
{
82-
$errorCode = $record->context['errorCode'];
83-
$errorInfo = $this->errorInfo->get($errorCode);
84-
85-
if (empty($errorInfo)) {
86-
$errorInfo = [
87-
'errorCode' => $errorCode,
88-
'title' => $record->message ?? ''
89-
];
90-
} else {
91-
$errorInfo['errorCode'] = $errorCode;
92-
if (!empty($record->message)) {
93-
$errorInfo['title'] = $record->message;
94-
}
95-
}
96-
97-
if (!empty($record->context['suggestion'])) {
98-
$errorInfo['suggestion'] = $record->context['suggestion'];
99-
}
100-
101-
ksort($errorInfo);
102-
103-
return $errorInfo;
104-
}
105-
}
106-
} else {
107-
/**
108-
*
109-
* Formatter for log messages for cloud.error.log
110-
*/
111-
class JsonErrorFormatter extends JsonFormatter
112-
{
113-
/**
114-
* @var ErrorInfo
115-
*/
116-
private $errorInfo;
117-
118-
/**
119-
* @var ReaderInterface
120-
*/
121-
private $reader;
122-
123-
/**
124-
* @param ErrorInfo $errorInfo
125-
* @param ReaderInterface $reader
126-
* @param 1|2 $batchMode
127-
* @param bool $appendNewline
128-
*/
129-
public function __construct(
130-
ErrorInfo $errorInfo,
131-
ReaderInterface $reader,
132-
$batchMode = self::BATCH_MODE_JSON,
133-
$appendNewline = true
134-
) {
135-
parent::__construct($batchMode, $appendNewline);
136-
137-
$this->errorInfo = $errorInfo;
138-
$this->reader = $reader;
139-
}
140-
141-
/**
142-
* Format record, skip logging if ErrorCode isn't passed.
143-
*
144-
* {@inheritDoc}
145-
*/
146-
public function format(array $record): string
147-
{
73+
} else if ($record instanceof \Monolog\LogRecord) { // Monolog version 3 or higher.
14874
try {
149-
if (!isset($record['context']['errorCode'])) {
75+
if (!isset($record->context['errorCode'])) {
15076
return '';
15177
}
152-
78+
15379
$loggedErrors = $this->reader->read();
154-
155-
if (isset($loggedErrors[$record['context']['errorCode']])) {
80+
81+
if (isset($loggedErrors[$record->context['errorCode']])) {
15682
return '';
15783
}
15884

159-
return parent::format($this->formatLog($record));
85+
return $this->toJson($this->formatLog($record->toArray())) . PHP_EOL;
16086
} catch (\Exception $exception) {
16187
return '';
16288
}
16389
}
90+
}
16491

165-
/**
166-
* Returns error info data based on errorCode.
167-
*
168-
* @param array $record
169-
* @return array
170-
* @throws FileSystemException
171-
*/
172-
private function formatLog(array $record): array
173-
{
174-
$errorCode = $record['context']['errorCode'];
175-
$errorInfo = $this->errorInfo->get($errorCode);
176-
177-
if (empty($errorInfo)) {
178-
$errorInfo = [
179-
'errorCode' => $errorCode,
180-
'title' => $record['message'] ?? ''
181-
];
182-
} else {
183-
$errorInfo['errorCode'] = $errorCode;
184-
if (!empty($record['message'])) {
185-
$errorInfo['title'] = $record['message'];
186-
}
92+
/**
93+
* Returns error info data based on errorCode.
94+
*
95+
* @param array $record
96+
* @return array
97+
* @throws FileSystemException
98+
*/
99+
private function formatLog(array $record): array
100+
{
101+
$errorCode = $record['context']['errorCode'];
102+
$errorInfo = $this->errorInfo->get($errorCode);
103+
104+
if (empty($errorInfo)) {
105+
$errorInfo = [
106+
'errorCode' => $errorCode,
107+
'title' => $record['message'] ?? ''
108+
];
109+
} else {
110+
$errorInfo['errorCode'] = $errorCode;
111+
if (!empty($record['message'])) {
112+
$errorInfo['title'] = $record['message'];
187113
}
114+
}
188115

189-
if (!empty($record['context']['suggestion'])) {
190-
$errorInfo['suggestion'] = $record['context']['suggestion'];
191-
}
116+
if (!empty($record['context']['suggestion'])) {
117+
$errorInfo['suggestion'] = $record['context']['suggestion'];
118+
}
192119

193-
ksort($errorInfo);
120+
ksort($errorInfo);
194121

195-
return $errorInfo;
196-
}
122+
return $errorInfo;
197123
}
198-
199124
}

src/App/Logger/Formatter/LineFormatter.php

Lines changed: 19 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,23 @@
99

1010
use Monolog\Logger;
1111

12-
if (\Monolog\Logger::API == 3) {
13-
/**
14-
* Formatter for log messages for cloud.log
15-
*/
16-
class LineFormatter extends \Monolog\Formatter\LineFormatter
17-
{
18-
public const FORMAT_BASE = "[%datetime%] %level_name%: %message%\n";
19-
public const FORMAT_BASE_ERROR = "[%datetime%] %level_name%: [%context.errorCode%] %message%\n";
12+
/**
13+
* Formatter for log messages for cloud.log
14+
*/
15+
class LineFormatter extends \Monolog\Formatter\LineFormatter
16+
{
17+
public const FORMAT_BASE = "[%datetime%] %level_name%: %message%\n";
18+
public const FORMAT_BASE_ERROR = "[%datetime%] %level_name%: [%context.errorCode%] %message%\n";
2019

21-
public function format(\Monolog\LogRecord $record): string
22-
{
23-
$errorLevels = [
24-
Logger::getLevelName(Logger::WARNING),
25-
Logger::getLevelName(Logger::ERROR),
26-
Logger::getLevelName(Logger::CRITICAL),
27-
];
20+
public function format(\Monolog\LogRecord|array $record): string
21+
{
22+
$errorLevels = [
23+
Logger::getLevelName(Logger::WARNING),
24+
Logger::getLevelName(Logger::ERROR),
25+
Logger::getLevelName(Logger::CRITICAL),
26+
];
27+
// Monolog version 3 or higher.
28+
if ($record instanceof \Monolog\LogRecord) {
2829
if (isset($record->level->name)
2930
&& in_array(strtoupper($record->level->name), $errorLevels)
3031
&& !empty($record->context['errorCode'])
@@ -47,30 +48,7 @@ public function format(\Monolog\LogRecord $record): string
4748
extra: $record->extra,
4849
);
4950
}
50-
51-
return parent::format($record);
52-
}
53-
}
54-
} else {
55-
/**
56-
* Formatter for log messages for cloud.log
57-
*/
58-
class LineFormatter extends \Monolog\Formatter\LineFormatter
59-
{
60-
public const FORMAT_BASE = "[%datetime%] %level_name%: %message%\n";
61-
public const FORMAT_BASE_ERROR = "[%datetime%] %level_name%: [%context.errorCode%] %message%\n";
62-
63-
/**
64-
* @inheritDoc
65-
*/
66-
public function format(array $record): string
67-
{
68-
$errorLevels = [
69-
Logger::getLevelName(Logger::WARNING),
70-
Logger::getLevelName(Logger::ERROR),
71-
Logger::getLevelName(Logger::CRITICAL),
72-
];
73-
51+
} else if (is_array($record)) { // Older Monolog versions.
7452
if (isset($record['level_name'])
7553
&& in_array($record['level_name'], $errorLevels)
7654
&& !empty($record['context']['errorCode'])
@@ -83,8 +61,8 @@ public function format(array $record): string
8361
if (isset($record['message']) && !empty($record['context']['suggestion'])) {
8462
$record['message'] .= PHP_EOL . $record['context']['suggestion'];
8563
}
86-
87-
return parent::format($record);
8864
}
65+
66+
return parent::format($record);
8967
}
9068
}

0 commit comments

Comments
 (0)