refactor(kernel): unify HTTP and CLI application lifecycle

Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
2026-07-27 00:48:11 -04:00
parent 98826143a8
commit 65c1b5fb75
67 changed files with 2737 additions and 1070 deletions
+6 -6
View File
@@ -2,7 +2,7 @@
namespace KTXC\Logger;
use KTXC\SessionTenant;
use KTXC\Context\TenantContextInterface;
use Psr\Log\LoggerInterface;
/**
@@ -20,7 +20,7 @@ use Psr\Log\LoggerInterface;
* {logDir}/tenant/{tenantIdentifier}/{channel}.jsonl
* Messages that carry tenant "system" always go to the global logger.
*
* Both behaviours rely on a live SessionTenant reference that is populated lazily
* Both behaviours rely on a live TenantContextInterface reference that is populated lazily
* by TenantMiddleware — the same pattern the cache stores use in Kernel::configureContainer().
*/
class TenantAwareLogger implements LoggerInterface
@@ -30,7 +30,7 @@ class TenantAwareLogger implements LoggerInterface
/**
* @param LoggerInterface $globalLogger Fallback logger (also used when perTenant = false).
* @param SessionTenant $sessionTenant Live reference configured by TenantMiddleware.
* @param TenantContextInterface $tenantContext Live reference configured by TenantMiddleware.
* @param string $logDir Base log directory (e.g. /var/www/app/var/log).
* @param string $channel Log file basename (e.g. 'app' → app.jsonl).
* @param string $minLevel Minimum PSR-3 level for lazily-created per-tenant loggers.
@@ -38,7 +38,7 @@ class TenantAwareLogger implements LoggerInterface
*/
public function __construct(
private readonly LoggerInterface $globalLogger,
private readonly SessionTenant $sessionTenant,
private readonly TenantContextInterface $tenantContext,
private readonly string $logDir,
private readonly string $channel = 'app',
private readonly string $minLevel = 'debug',
@@ -60,8 +60,8 @@ class TenantAwareLogger implements LoggerInterface
{
// Resolve current tenant id; fall back to 'system' for CLI / boot phase.
$tenantId = 'system';
if ($this->sessionTenant->configured()) {
$tenantId = $this->sessionTenant->identifier() ?? 'system';
if ($this->tenantContext->configured()) {
$tenantId = $this->tenantContext->identifier() ?? 'system';
}
// Inject tenant id as a reserved context key that concrete loggers extract.