1717
1818namespace MongoDB ;
1919
20- use MongoDB \Driver \Logging \ Logger as DriverLogger ;
20+ use MongoDB \Driver \Monitoring \ LogSubscriber ;
2121use 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 ;
2424use 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 ;
2828use 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}
0 commit comments