Skip to content

Commit d83460e

Browse files
authored
Merge pull request #4: Implement log method
2 parents 0f66b60 + 28a1bb3 commit d83460e

File tree

3 files changed

+428
-7
lines changed

3 files changed

+428
-7
lines changed

src/RpcLogger.php

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,55 @@
66

77
use Psr\Log\LoggerInterface;
88
use Psr\Log\LoggerTrait;
9+
use Psr\Log\LogLevel as PsrLogLevel;
10+
use Psr\Log\InvalidArgumentException as PsrInvalidArgumentException;
11+
use RoadRunner\Logger\Logger as AppLogger;
912

1013
class RpcLogger implements LoggerInterface
1114
{
1215
use LoggerTrait;
1316

17+
private readonly AppLogger $logger;
18+
19+
public function __construct(AppLogger $logger)
20+
{
21+
$this->logger = $logger;
22+
}
23+
24+
/**
25+
* @param mixed $level
26+
* @param array<array-key, mixed> $context
27+
*
28+
* @link https://www.php-fig.org/psr/psr-3/#5-psrlogloglevel
29+
*/
1430
public function log($level, \Stringable|string $message, array $context = []): void
1531
{
16-
/**
17-
* TODO: to be implemented
18-
*
19-
* @link https://github.com/roadrunner-php/psr-logger/issues/3
20-
*/
32+
$normalizedLevel = \is_string($level) ? \strtolower($level) : (string) $level;
33+
34+
/** @var array<string, mixed> $context */
35+
switch ($normalizedLevel) {
36+
case PsrLogLevel::EMERGENCY:
37+
case PsrLogLevel::ALERT:
38+
case PsrLogLevel::CRITICAL:
39+
case PsrLogLevel::ERROR:
40+
$this->logger->error($message, $context);
41+
return;
42+
43+
case PsrLogLevel::WARNING:
44+
$this->logger->warning($message, $context);
45+
return;
46+
47+
case PsrLogLevel::NOTICE:
48+
case PsrLogLevel::INFO:
49+
$this->logger->info((string) $message, $context);
50+
return;
51+
52+
case PsrLogLevel::DEBUG:
53+
$this->logger->debug($message, $context);
54+
return;
55+
56+
default:
57+
throw new PsrInvalidArgumentException('Invalid log level: ' . $normalizedLevel);
58+
}
2159
}
2260
}

0 commit comments

Comments
 (0)