19declare(strict_types=1);
25use Monolog\Logger as MonologLogger;
29use Monolog\Handler\HandlerInterface as MonologHandlerInterface;
43 protected MonologFactoryInterface $monolog_factory,
44 protected BasicConfigInterface $basic_config,
45 protected array $handler_providers
53 if (isset($this->loggers[$component_id])) {
54 return $this->loggers[$component_id];
58 $lazy_logger =
new ReflectionClass(Logger::class)->newLazyGhost(
59 function (Logger
$logger) use ($component_id, $level_fetcher):
void {
61 $logger->__construct($monolog_logger);
64 return $this->loggers[$component_id] = $lazy_logger;
71 if (!$this->basic_config->isLoggingEnabled()) {
72 return $this->monolog_factory->nullLogger($component_id);
74 $level = $level_fetcher->fetchLevel();
75 if ($level === ILIASLogLevel::OFF) {
76 return $this->monolog_factory->nullLogger($component_id);
78 return $this->monolog_factory->logger(
80 ...$this->getApplicableHandlers($component_id, $level)
92 foreach ($this->handler_providers as $handler_provider) {
93 if (!$handler_provider->appliesTo($component_id)) {
96 $applicable[] = $handler_provider->getHandler($component_id, $level);
buildMonologLogger(string $component_id, LevelFetcherInterface $level_fetcher)
getApplicableHandlers(string $component_id, ILIASLogLevel $level)
__construct(protected MonologFactoryInterface $monolog_factory, protected BasicConfigInterface $basic_config, protected array $handler_providers)
getLazyGhost(string $component_id, LevelFetcherInterface $level_fetcher)
This exists to encapsulate reading the level of a logger from the config, to be able to delay it as m...
if(!file_exists('../ilias.ini.php'))