From 58c9b298db7d8740af5109eef73c02dd6fd3256d Mon Sep 17 00:00:00 2001 From: pronchev Date: Mon, 6 Apr 2026 20:38:57 +0300 Subject: [PATCH] Register Logger --- .claude/architecture/bootstrap.md | 6 ++++-- src/ContainerFactory.php | 11 +++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/.claude/architecture/bootstrap.md b/.claude/architecture/bootstrap.md index 362b98d..41cd579 100644 --- a/.claude/architecture/bootstrap.md +++ b/.claude/architecture/bootstrap.md @@ -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` (если есть) — файл возвращает diff --git a/src/ContainerFactory.php b/src/ContainerFactory.php index 3d15ffe..42debb4 100644 --- a/src/ContainerFactory.php +++ b/src/ContainerFactory.php @@ -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';