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:
@@ -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,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user