17
17
18
18
namespace MongoDB ;
19
19
20
- use MongoDB \Driver \Logging \ Logger as DriverLogger ;
20
+ use MongoDB \Driver \Monitoring \ LogSubscriber ;
21
21
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 ;
24
24
use SplObjectStorage ;
25
25
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 ;
28
28
use function sprintf ;
29
29
30
- final class PsrLogAdapter implements DriverLogger
30
+ final class PsrLogAdapter implements LogSubscriber
31
31
{
32
32
private static ?self $ instance = null ;
33
33
34
- /** @psalm-var SplObjectStorage<PsrLogger , null> */
35
- private SplObjectStorage $ psrLoggers ;
34
+ /** @psalm-var SplObjectStorage<LoggerInterface , null> */
35
+ private SplObjectStorage $ loggers ;
36
36
37
37
private const PSR_LEVELS = [
38
- DriverLogger ::LEVEL_ERROR => PsrLogLevel ::ERROR ,
38
+ LogSubscriber ::LEVEL_ERROR => LogLevel ::ERROR ,
39
39
/* libmongoc considers "critical" less severe than "error" so map it to
40
40
* "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 ,
46
46
];
47
47
48
- public static function addLogger (PsrLogger $ psrLogger ): void
48
+ public static function addLogger (LoggerInterface $ logger ): void
49
49
{
50
50
$ instance = self ::getInstance ();
51
51
52
- $ instance ->psrLoggers ->attach ($ psrLogger );
52
+ $ instance ->loggers ->attach ($ logger );
53
53
54
- addLogger ($ instance );
54
+ addSubscriber ($ instance );
55
55
}
56
56
57
57
/**
58
58
* Pipes a log message from PHPC to all registered PSR loggers.
59
59
*
60
60
* @internal
61
- * @see DriverLogger ::log()
61
+ * @see LogSubscriber ::log()
62
62
*/
63
63
public function log (int $ level , string $ domain , string $ message ): void
64
64
{
65
65
if (! isset (self ::PSR_LEVELS [$ level ])) {
66
66
throw new UnexpectedValueException (sprintf (
67
67
'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 ,
70
70
$ level ,
71
71
$ domain ,
72
72
$ message ,
@@ -77,18 +77,18 @@ public function log(int $level, string $domain, string $message): void
77
77
$ psrLevel = self ::PSR_LEVELS [$ level ];
78
78
$ context = ['domain ' => $ domain ];
79
79
80
- foreach ($ instance ->psrLoggers as $ psrLogger ) {
81
- $ psrLogger ->log ($ psrLevel , $ message , $ context );
80
+ foreach ($ instance ->loggers as $ logger ) {
81
+ $ logger ->log ($ psrLevel , $ message , $ context );
82
82
}
83
83
}
84
84
85
- public static function removeLogger (PsrLogger $ psrLogger ): void
85
+ public static function removeLogger (LoggerInterface $ logger ): void
86
86
{
87
87
$ instance = self ::getInstance ();
88
- $ instance ->psrLoggers ->detach ($ psrLogger );
88
+ $ instance ->loggers ->detach ($ logger );
89
89
90
- if ($ instance ->psrLoggers ->count () === 0 ) {
91
- removeLogger ($ instance );
90
+ if ($ instance ->loggers ->count () === 0 ) {
91
+ removeSubscriber ($ instance );
92
92
}
93
93
}
94
94
@@ -104,11 +104,15 @@ public static function writeLog(int $level, string $domain, string $message): vo
104
104
105
105
private function __construct ()
106
106
{
107
- $ this ->psrLoggers = new SplObjectStorage ();
107
+ $ this ->loggers = new SplObjectStorage ();
108
108
}
109
109
110
110
private static function getInstance (): self
111
111
{
112
- return self ::$ instance ??= new self ();
112
+ if (self ::$ instance === null ) {
113
+ self ::$ instance = new self ();
114
+ }
115
+
116
+ return self ::$ instance ;
113
117
}
114
118
}
0 commit comments