Enable Discovery debug logging for production troubleshooting

- Add DISCOVERY_LOG_LEVEL=debug
- Add DISCOVERY_SHOW_PROGRESS=true
- Temporary changes for debugging InitializerProcessor fixes on production
This commit is contained in:
2025-08-11 20:13:26 +02:00
parent 59fd3dd3b1
commit 55a330b223
3683 changed files with 2956207 additions and 16948 deletions

View File

@@ -1,9 +1,11 @@
<?php
declare(strict_types=1);
namespace App\Framework\Logging;
use App\Framework\Config\TypedConfiguration;
use App\Framework\Core\PathProvider;
use App\Framework\Database\DatabaseManager;
use App\Framework\DI\Initializer;
use App\Framework\Logging\Handlers\ConsoleHandler;
use App\Framework\Logging\Handlers\FileHandler;
@@ -12,33 +14,57 @@ use App\Framework\Logging\Handlers\WebHandler;
use App\Framework\Queue\FileQueue;
use App\Framework\Queue\Queue;
use App\Framework\Queue\RedisQueue;
;
use App\Framework\Redis\RedisConfig;
use App\Framework\Redis\RedisConnection;
final readonly class LoggerInitializer
{
public function __construct(
#private DatabaseManager $db,
#private PathProvider $pathProvider,
){}
#[Initializer]
public function __invoke():Logger
public function __invoke(TypedConfiguration $config, PathProvider $pathProvider): Logger
{
$processorManager = new ProcessorManager();
$queue = new RedisQueue('commands', 'redis');
#$path = $this->pathProvider->resolvePath('/src/Framework/CommandBus/storage/queue');
#$queue = new FileQueue($path);
// Set log level based on environment
$minLevel = $config->app->isDebugEnabled()
? LogLevel::DEBUG
: LogLevel::INFO;
// Erstelle LogConfig für zentrale Pfadverwaltung
$logConfig = new LogConfig($pathProvider);
// Stelle sicher, dass alle Logverzeichnisse existieren
$logConfig->ensureLogDirectoriesExist();
$redisConfig = new RedisConfig(host: 'redis', database: 2);
$redisConnection = new RedisConnection($redisConfig, 'queue');
$queue = new RedisQueue($redisConnection, 'commands');
// Alternativ: FileQueue mit aufgelöstem Pfad
// $queuePath = $pathProvider->resolvePath('storage/queue');
// $queue = new FileQueue($queuePath);
// In production, we might want to exclude console handler
$handlers = [];
if (! $config->app->isProduction()) {
$handlers[] = new ConsoleHandler();
}
$handlers[] = new QueuedLogHandler($queue);
$handlers[] = new WebHandler();
$handlers[] = new FileHandler(
$logConfig->getLogPath('app'),
$minLevel,
'[{timestamp}] [{level_name}] {request_id}{channel}{message}',
0644,
null,
$pathProvider
);
return new DefaultLogger(
minLevel: LogLevel::DEBUG,
handlers: [
new QueuedLogHandler($queue),
new ConsoleHandler(),
new WebHandler(),
new FileHandler('logs/app.log')],
processorManager: $processorManager,
minLevel: $minLevel,
handlers: $handlers,
processorManager: $processorManager,
);
}
}