feat(Production): Complete production deployment infrastructure

- Add comprehensive health check system with multiple endpoints
- Add Prometheus metrics endpoint
- Add production logging configurations (5 strategies)
- Add complete deployment documentation suite:
  * QUICKSTART.md - 30-minute deployment guide
  * DEPLOYMENT_CHECKLIST.md - Printable verification checklist
  * DEPLOYMENT_WORKFLOW.md - Complete deployment lifecycle
  * PRODUCTION_DEPLOYMENT.md - Comprehensive technical reference
  * production-logging.md - Logging configuration guide
  * ANSIBLE_DEPLOYMENT.md - Infrastructure as Code automation
  * README.md - Navigation hub
  * DEPLOYMENT_SUMMARY.md - Executive summary
- Add deployment scripts and automation
- Add DEPLOYMENT_PLAN.md - Concrete plan for immediate deployment
- Update README with production-ready features

All production infrastructure is now complete and ready for deployment.
This commit is contained in:
2025-10-25 19:18:37 +02:00
parent caa85db796
commit fc3d7e6357
83016 changed files with 378904 additions and 20919 deletions

View File

@@ -14,17 +14,9 @@ use DateTimeZone;
* Einfacher Logger für das Framework.
*/
#[Singleton]
final readonly class DefaultLogger implements Logger
final readonly class DefaultLogger implements Logger, SupportsChannels
{
public ChannelLogger $security;
public ChannelLogger $cache;
public ChannelLogger $database;
public ChannelLogger $framework;
public ChannelLogger $error;
private ChannelLoggerRegistry $channelRegistry;
/**
* @param LogLevel $minLevel Minimales Level, das geloggt werden soll
@@ -39,12 +31,8 @@ final readonly class DefaultLogger implements Logger
private ProcessorManager $processorManager = new ProcessorManager(),
private ?LogContextManager $contextManager = null,
) {
// Channel-Logger initialisieren
$this->security = new DefaultChannelLogger($this, LogChannel::SECURITY);
$this->cache = new DefaultChannelLogger($this, LogChannel::CACHE);
$this->database = new DefaultChannelLogger($this, LogChannel::DATABASE);
$this->framework = new DefaultChannelLogger($this, LogChannel::FRAMEWORK);
$this->error = new DefaultChannelLogger($this, LogChannel::ERROR);
// Channel-Logger-Registry initialisieren
$this->channelRegistry = new ChannelLoggerRegistry($this);
}
public function debug(string $message, ?LogContext $context = null): void
@@ -255,6 +243,14 @@ final readonly class DefaultLogger implements Logger
return $record;
}
/**
* Holt einen ChannelLogger für einen spezifischen Channel
*/
public function channel(LogChannel|string $channel): Logger&HasChannel
{
return $this->channelRegistry->get($channel);
}
/**
* Gibt die aktuelle Konfiguration des Loggers zurück
*/
@@ -264,6 +260,7 @@ final readonly class DefaultLogger implements Logger
'minLevel' => $this->minLevel->value,
'handlers' => array_map(fn (LogHandler $h) => get_class($h), $this->handlers),
'processors' => $this->processorManager->getProcessorList(),
'registeredChannels' => $this->channelRegistry->getRegisteredChannels(),
];
}
}