|
10 | 10 |
|
11 | 11 | class LoggerServiceProvider
|
12 | 12 | {
|
13 |
| - public function register(LoggerConfiguration $config): void |
| 13 | + public function __construct( |
| 14 | + private LoggerConfiguration $config, |
| 15 | + private LoggerFactory $loggerFactory, |
| 16 | + private LoggerRegistry $loggerRegistry |
| 17 | + ) { |
| 18 | + } |
| 19 | + |
| 20 | + public function register(): void |
| 21 | + { |
| 22 | + $this->registerDefaultLoggers(); |
| 23 | + $this->registerEmergencyLogger(); |
| 24 | + $this->registerOptionalLoggers(); |
| 25 | + } |
| 26 | + |
| 27 | + private function registerDefaultLoggers(): void |
14 | 28 | {
|
15 |
| - $defaultChannel = $config->get('default'); |
16 |
| - $channelsConfig = $config->get('channels', []); |
| 29 | + $defaultChannel = $this->config->get('default'); |
| 30 | + $channelsConfig = $this->config->get('channels', []); |
17 | 31 |
|
18 | 32 | foreach ($channelsConfig as $channelName => $channelConfig) {
|
19 |
| - $logger = LoggerFactory::createLogger($channelName, $channelConfig); |
20 |
| - LoggerRegistry::addLogger($channelName, $logger); |
| 33 | + $logger = $this->loggerFactory->createLogger($channelName, $channelConfig); |
| 34 | + $this->loggerRegistry->addLogger($channelName, $logger); |
21 | 35 |
|
22 | 36 | if ($channelName === $defaultChannel) {
|
23 |
| - LoggerRegistry::addLogger('default', $logger); |
| 37 | + $this->loggerRegistry->addLogger('default', $logger); |
24 | 38 | }
|
25 | 39 | }
|
| 40 | + } |
26 | 41 |
|
27 |
| - // Register emergency logger |
28 |
| - $emergencyLoggerConfig = $config->get('emergency_logger', []); |
29 |
| - $emergencyLogger = LoggerFactory::createLogger('emergency', $emergencyLoggerConfig); |
30 |
| - LoggerRegistry::addLogger('emergency', $emergencyLogger); |
31 |
| - |
32 |
| - // Register query logger |
33 |
| - if ($config->get('query_logger.enabled', false)) { |
34 |
| - $queryLoggerConfig = $config->get('query_logger', []); |
35 |
| - $queryLogger = LoggerFactory::createQueryLogger($queryLoggerConfig); |
36 |
| - LoggerRegistry::addLogger('query', $queryLogger); |
37 |
| - } |
| 42 | + private function registerEmergencyLogger(): void |
| 43 | + { |
| 44 | + $emergencyLoggerConfig = $this->config->get('emergency_logger', []); |
| 45 | + $emergencyLogger = $this->loggerFactory->createLogger('emergency', $emergencyLoggerConfig); |
| 46 | + $this->loggerRegistry->addLogger('emergency', $emergencyLogger); |
| 47 | + } |
38 | 48 |
|
39 |
| - // Register performance logger |
40 |
| - if ($config->get('performance_logger.enabled', false)) { |
41 |
| - $performanceLoggerConfig = $config->get('performance_logger', []); |
42 |
| - $performanceLogger = LoggerFactory::createPerformanceLogger($performanceLoggerConfig); |
43 |
| - LoggerRegistry::addLogger('performance', $performanceLogger); |
44 |
| - } |
| 49 | + private function registerOptionalLoggers(): void |
| 50 | + { |
| 51 | + $this->registerLoggerIfEnabled('query_logger', 'createQueryLogger'); |
| 52 | + $this->registerLoggerIfEnabled('performance_logger', 'createPerformanceLogger'); |
| 53 | + $this->registerLoggerIfEnabled('error_logger', 'createErrorLogger', true); |
| 54 | + $this->registerAsyncLoggerIfEnabled(); |
| 55 | + } |
45 | 56 |
|
46 |
| - // Register error logger |
47 |
| - if ($config->get('error_logger.enabled', true)) { |
48 |
| - $errorLoggerConfig = $config->get('error_logger', []); |
49 |
| - $errorLogger = LoggerFactory::createErrorLogger($errorLoggerConfig); |
50 |
| - LoggerRegistry::addLogger('error', $errorLogger); |
| 57 | + private function registerLoggerIfEnabled(string $configKey, string $factoryMethod, bool $defaultEnabled = false): void |
| 58 | + { |
| 59 | + if ($this->config->get("$configKey.enabled", $defaultEnabled)) { |
| 60 | + $loggerConfig = $this->config->get($configKey, []); |
| 61 | + $logger = $this->loggerFactory->$factoryMethod($loggerConfig); |
| 62 | + $this->loggerRegistry->addLogger(explode('_', $configKey)[0], $logger); |
51 | 63 | }
|
| 64 | + } |
52 | 65 |
|
53 |
| - // Register async logger if enabled |
54 |
| - if ($config->get('async.enabled', true)) { |
55 |
| - $asyncLogger = LoggerFactory::createAsyncLogger( |
56 |
| - LoggerRegistry::getLogger('default'), |
57 |
| - (int) $config->get('async.batch_size', 10) |
| 66 | + private function registerAsyncLoggerIfEnabled(): void |
| 67 | + { |
| 68 | + if ($this->config->get('async.enabled', true)) { |
| 69 | + $asyncLogger = $this->loggerFactory->createAsyncLogger( |
| 70 | + $this->loggerRegistry->getLogger('default'), |
| 71 | + (int) $this->config->get('async.batch_size', 10) |
58 | 72 | );
|
59 |
| - LoggerRegistry::addLogger('async', $asyncLogger); |
| 73 | + $this->loggerRegistry->addLogger('async', $asyncLogger); |
60 | 74 | }
|
61 | 75 | }
|
62 | 76 | }
|
0 commit comments