<?php declare(strict_types=1); namespace Xentral\Components\Logger; use Xentral\Components\Logger\Context\ContextHelper; use Xentral\Components\Logger\Handler\DatabaseLogHandler; use Xentral\Components\Logger\Handler\NullLogHandler; use Xentral\Core\DependencyInjection\ServiceContainer; use Xentral\Modules\Log\Exception\InvalidLoglevelException; use Xentral\Modules\Log\Service\LoggerConfigService; final class Bootstrap { /** * @return array */ public static function registerServices(): array { return [ 'Logger' => 'onInitLogger', ]; } /** * @param ServiceContainer $container * * @return Logger */ public static function onInitLogger(ServiceContainer $container): Logger { $request = $container->get('Request'); $logLevel = LogLevel::ERROR; if ($container->has('LoggerConfigService')) { /** @var LoggerConfigService $cfg */ $cfg = $container->get('LoggerConfigService'); try { $logLevel = $cfg->getLogLevel(); } catch (InvalidLoglevelException $e) { } } $contextHelper = new ContextHelper($request); $logger = new Logger($contextHelper); $handler = new DatabaseLogHandler($container->get('Database'), $logLevel); $logger->pushHandler($handler); return $logger; } }