Register Logger

This commit is contained in:
2026-04-06 20:38:57 +03:00
parent 72415949e3
commit 58c9b298db
2 changed files with 15 additions and 2 deletions

View File

@@ -41,8 +41,10 @@ ContainerFactory::build(Environment $env, Config $config, string $basePath): Con
- Autowiring включён всегда
- В prod: `$builder->enableCompilation($basePath . '/var/cache/prod/')`
- Автоматически регистрирует `Config::class` и `Environment::class` в контейнере — любой класс
может получить их через DI без ручного биндинга в `services.php`
- Автоматически регистрирует `Config::class`, `Environment::class` и `LoggerInterface::class`
в контейнере — любой класс может получить их через DI без ручного биндинга в `services.php`
- `LoggerInterface` по умолчанию резолвится в `CompositeLogger([StdoutLogger])`;
если задан `log.file` — добавляется `FileLogger`
- Загружает `$basePath/config/routes.php` (если есть) — файл возвращает `RouteDefinition[]`,
фреймворк автоматически создаёт `Router` и регистрирует его в контейнере
- Загружает `$basePath/config/services.php` (если есть) — файл возвращает

View File

@@ -5,6 +5,10 @@ namespace Pronchev\Pinecore;
use DI\Container;
use DI\ContainerBuilder;
use Pronchev\Pinecore\Http\Router;
use Pronchev\Pinecore\Log\CompositeLogger;
use Pronchev\Pinecore\Log\FileLogger;
use Pronchev\Pinecore\Log\StdoutLogger;
use Psr\Log\LoggerInterface;
class ContainerFactory
{
@@ -25,6 +29,13 @@ class ContainerFactory
$builder->addDefinitions([
Config::class => $config,
Environment::class => $env,
LoggerInterface::class => function ($c) use ($config) {
$loggers = [$c->get(StdoutLogger::class)];
if ($config->get('log.file')) {
$loggers[] = $c->get(FileLogger::class);
}
return new CompositeLogger($loggers);
},
]);
$routesFile = $basePath . '/config/routes.php';