Skip to content

Commit 0fb61b8

Browse files
committed
Use LogSubscriber API in PsrLogAdapter
1 parent 45c9c0d commit 0fb61b8

File tree

2 files changed

+39
-35
lines changed

2 files changed

+39
-35
lines changed

src/PsrLogAdapter.php

Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -17,56 +17,56 @@
1717

1818
namespace MongoDB;
1919

20-
use MongoDB\Driver\Logging\Logger as DriverLogger;
20+
use MongoDB\Driver\Monitoring\LogSubscriber;
2121
use MongoDB\Exception\UnexpectedValueException;
22-
use Psr\Log\LoggerInterface as PsrLogger;
23-
use Psr\Log\LogLevel as PsrLogLevel;
22+
use Psr\Log\LoggerInterface;
23+
use Psr\Log\LogLevel;
2424
use SplObjectStorage;
2525

26-
use function MongoDB\Driver\Logging\addLogger;
27-
use function MongoDB\Driver\Logging\removeLogger;
26+
use function MongoDB\Driver\Monitoring\addSubscriber;
27+
use function MongoDB\Driver\Monitoring\removeSubscriber;
2828
use function sprintf;
2929

30-
final class PsrLogAdapter implements DriverLogger
30+
final class PsrLogAdapter implements LogSubscriber
3131
{
3232
private static ?self $instance = null;
3333

34-
/** @psalm-var SplObjectStorage<PsrLogger, null> */
35-
private SplObjectStorage $psrLoggers;
34+
/** @psalm-var SplObjectStorage<LoggerInterface, null> */
35+
private SplObjectStorage $loggers;
3636

3737
private const PSR_LEVELS = [
38-
DriverLogger::LEVEL_ERROR => PsrLogLevel::ERROR,
38+
LogSubscriber::LEVEL_ERROR => LogLevel::ERROR,
3939
/* libmongoc considers "critical" less severe than "error" so map it to
4040
* "error" in the PSR logger. */
41-
DriverLogger::LEVEL_CRITICAL => PsrLogLevel::ERROR,
42-
DriverLogger::LEVEL_WARNING => PsrLogLevel::WARNING,
43-
DriverLogger::LEVEL_MESSAGE => PsrLogLevel::NOTICE,
44-
DriverLogger::LEVEL_INFO => PsrLogLevel::INFO,
45-
DriverLogger::LEVEL_DEBUG => PsrLogLevel::DEBUG,
41+
LogSubscriber::LEVEL_CRITICAL => LogLevel::ERROR,
42+
LogSubscriber::LEVEL_WARNING => LogLevel::WARNING,
43+
LogSubscriber::LEVEL_MESSAGE => LogLevel::NOTICE,
44+
LogSubscriber::LEVEL_INFO => LogLevel::INFO,
45+
LogSubscriber::LEVEL_DEBUG => LogLevel::DEBUG,
4646
];
4747

48-
public static function addLogger(PsrLogger $psrLogger): void
48+
public static function addLogger(LoggerInterface $logger): void
4949
{
5050
$instance = self::getInstance();
5151

52-
$instance->psrLoggers->attach($psrLogger);
52+
$instance->loggers->attach($logger);
5353

54-
addLogger($instance);
54+
addSubscriber($instance);
5555
}
5656

5757
/**
5858
* Pipes a log message from PHPC to all registered PSR loggers.
5959
*
6060
* @internal
61-
* @see DriverLogger::log()
61+
* @see LogSubscriber::log()
6262
*/
6363
public function log(int $level, string $domain, string $message): void
6464
{
6565
if (! isset(self::PSR_LEVELS[$level])) {
6666
throw new UnexpectedValueException(sprintf(
6767
'Expected level to be >= %d and <= %d, %d given for domain "%s" and message: %s',
68-
DriverLogger::LEVEL_ERROR,
69-
DriverLogger::LEVEL_DEBUG,
68+
LogSubscriber::LEVEL_ERROR,
69+
LogSubscriber::LEVEL_DEBUG,
7070
$level,
7171
$domain,
7272
$message,
@@ -77,18 +77,18 @@ public function log(int $level, string $domain, string $message): void
7777
$psrLevel = self::PSR_LEVELS[$level];
7878
$context = ['domain' => $domain];
7979

80-
foreach ($instance->psrLoggers as $psrLogger) {
81-
$psrLogger->log($psrLevel, $message, $context);
80+
foreach ($instance->loggers as $logger) {
81+
$logger->log($psrLevel, $message, $context);
8282
}
8383
}
8484

85-
public static function removeLogger(PsrLogger $psrLogger): void
85+
public static function removeLogger(LoggerInterface $logger): void
8686
{
8787
$instance = self::getInstance();
88-
$instance->psrLoggers->detach($psrLogger);
88+
$instance->loggers->detach($logger);
8989

90-
if ($instance->psrLoggers->count() === 0) {
91-
removeLogger($instance);
90+
if ($instance->loggers->count() === 0) {
91+
removeSubscriber($instance);
9292
}
9393
}
9494

@@ -104,11 +104,15 @@ public static function writeLog(int $level, string $domain, string $message): vo
104104

105105
private function __construct()
106106
{
107-
$this->psrLoggers = new SplObjectStorage();
107+
$this->loggers = new SplObjectStorage();
108108
}
109109

110110
private static function getInstance(): self
111111
{
112-
return self::$instance ??= new self();
112+
if (self::$instance === null) {
113+
self::$instance = new self();
114+
}
115+
116+
return self::$instance;
113117
}
114118
}

tests/PsrLogAdapterTest.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace MongoDB\Tests;
44

5-
use MongoDB\Driver\Logging\Logger as DriverLogger;
5+
use MongoDB\Driver\Monitoring\LogSubscriber;
66
use MongoDB\Exception\UnexpectedValueException;
77
use MongoDB\PsrLogAdapter;
88
use PHPUnit\Framework\TestCase as BaseTestCase;
@@ -45,12 +45,12 @@ public function testWriteLogMapsDriverLogLevelsToPsrLogLevels(): void
4545

4646
$domain = 'domain';
4747

48-
PsrLogAdapter::writeLog(DriverLogger::LEVEL_ERROR, $domain, 'error');
49-
PsrLogAdapter::writeLog(DriverLogger::LEVEL_CRITICAL, $domain, 'critical');
50-
PsrLogAdapter::writeLog(DriverLogger::LEVEL_WARNING, $domain, 'warning');
51-
PsrLogAdapter::writeLog(DriverLogger::LEVEL_MESSAGE, $domain, 'message');
52-
PsrLogAdapter::writeLog(DriverLogger::LEVEL_INFO, $domain, 'info');
53-
PsrLogAdapter::writeLog(DriverLogger::LEVEL_DEBUG, $domain, 'debug');
48+
PsrLogAdapter::writeLog(LogSubscriber::LEVEL_ERROR, $domain, 'error');
49+
PsrLogAdapter::writeLog(LogSubscriber::LEVEL_CRITICAL, $domain, 'critical');
50+
PsrLogAdapter::writeLog(LogSubscriber::LEVEL_WARNING, $domain, 'warning');
51+
PsrLogAdapter::writeLog(LogSubscriber::LEVEL_MESSAGE, $domain, 'message');
52+
PsrLogAdapter::writeLog(LogSubscriber::LEVEL_INFO, $domain, 'info');
53+
PsrLogAdapter::writeLog(LogSubscriber::LEVEL_DEBUG, $domain, 'debug');
5454

5555
$context = ['domain' => $domain];
5656

0 commit comments

Comments
 (0)