From e0f05bc0456561fbc51a8ff3e168561e672a5dbe Mon Sep 17 00:00:00 2001 From: barbosa89 Date: Sat, 11 Apr 2026 15:34:45 +0000 Subject: [PATCH] feat: add debug level configuration for logging --- src/Logging/LoggerFactory.php | 19 ++++++++++++------- tests/fixtures/application/config/app.php | 1 + 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/Logging/LoggerFactory.php b/src/Logging/LoggerFactory.php index 238812ee..72fd9563 100644 --- a/src/Logging/LoggerFactory.php +++ b/src/Logging/LoggerFactory.php @@ -9,6 +9,7 @@ use Amp\Log\ConsoleFormatter; use Amp\Log\StreamHandler; use Monolog\Formatter\LineFormatter; +use Monolog\Level; use Monolog\Logger; use Monolog\Processor\PsrLogMessageProcessor; use Phenix\Constants\ServerMode; @@ -21,12 +22,16 @@ class LoggerFactory implements Makeable { public static function make(string $key, ServerMode $serverMode = ServerMode::SINGLE): Logger { + /** @var int|string|null $levelConfig */ + $levelConfig = Config::get('app.debug_level'); + $level = Level::tryFrom((int) $levelConfig) ?? Level::Debug; + if ($serverMode === ServerMode::CLUSTER && Cluster::isWorker()) { - $logHandler = Cluster::createLogHandler(); + $logHandler = Cluster::createLogHandler($level); } else { $logHandler = match ($key) { - 'file' => self::fileHandler(), - 'stream' => self::streamHandler(), + 'file' => self::fileHandler($level), + 'stream' => self::streamHandler($level), default => throw new RuntimeError("Unsupported logging channel: {$key}"), }; } @@ -37,16 +42,16 @@ public static function make(string $key, ServerMode $serverMode = ServerMode::SI return $logger; } - private static function streamHandler(): StreamHandler + private static function streamHandler(Level $level): StreamHandler { - $logHandler = new StreamHandler(ByteStream\getStdout()); + $logHandler = new StreamHandler(ByteStream\getStdout(), $level); $logHandler->pushProcessor(new PsrLogMessageProcessor()); $logHandler->setFormatter(new ConsoleFormatter()); return $logHandler; } - private static function fileHandler(): StreamHandler + private static function fileHandler(Level $level): StreamHandler { $path = Config::get('logging.path'); @@ -56,7 +61,7 @@ private static function fileHandler(): StreamHandler $file = File::openFile($path, 'a'); - $logHandler = new StreamHandler($file); + $logHandler = new StreamHandler($file, $level); $logHandler->pushProcessor(new PsrLogMessageProcessor()); $logHandler->setFormatter(new LineFormatter()); diff --git a/tests/fixtures/application/config/app.php b/tests/fixtures/application/config/app.php index 616d6d63..ae739dec 100644 --- a/tests/fixtures/application/config/app.php +++ b/tests/fixtures/application/config/app.php @@ -51,6 +51,7 @@ */ 'server_mode' => env('APP_SERVER_MODE', static fn (): string => 'single'), 'debug' => env('APP_DEBUG', static fn (): bool => true), + 'debug_level' => env('APP_DEBUG_LEVEL', static fn (): int => 100), 'locale' => 'en', 'fallback_locale' => 'en', 'middlewares' => [