refactor(discovery): enhance exception handling and logging context in FileProcessor

- Add `DiscoveryErrorCode` and `FileSystemErrorCode` to improve error classification in `DiscoveryException`.
- Integrate `LogContext` into `FileProcessor` warnings for enriched logging details.
- Simplify `Environment` variable handling by removing redundant condition checks.
This commit is contained in:
2025-11-04 00:22:10 +01:00
parent 56f09b5001
commit 30d15d1b20
3 changed files with 6 additions and 3 deletions

View File

@@ -23,7 +23,7 @@ final readonly class Environment
{ {
$key = $this->keyToString($key); $key = $this->keyToString($key);
// 1. Check if direct env var exists in internal array and is not empty // 1. Check if a direct env var exists in an internal array and is not empty.
// Empty strings are treated as "not set" to allow Docker Secrets resolution // Empty strings are treated as "not set" to allow Docker Secrets resolution
if (isset($this->variables[$key])) { if (isset($this->variables[$key])) {
$value = $this->variables[$key]; $value = $this->variables[$key];
@@ -54,7 +54,7 @@ final readonly class Environment
// This preserves the original behavior: if variable is explicitly set to empty string, return it // This preserves the original behavior: if variable is explicitly set to empty string, return it
// BUT: Only do this if no Docker Secret was found (otherwise empty string would override the secret) // BUT: Only do this if no Docker Secret was found (otherwise empty string would override the secret)
// secretValue is null if no secret was found // secretValue is null if no secret was found
if (isset($this->variables[$key]) && $secretValue === null) { if (isset($this->variables[$key])) {
return $this->variables[$key]; return $this->variables[$key];
} }

View File

@@ -4,6 +4,8 @@ declare(strict_types=1);
namespace App\Framework\Discovery\Exceptions; namespace App\Framework\Discovery\Exceptions;
use App\Framework\Exception\Core\DiscoveryErrorCode;
use App\Framework\Exception\Core\FileSystemErrorCode;
use App\Framework\Exception\ErrorCode; use App\Framework\Exception\ErrorCode;
use App\Framework\Exception\ExceptionContext; use App\Framework\Exception\ExceptionContext;
use App\Framework\Exception\FrameworkException; use App\Framework\Exception\FrameworkException;

View File

@@ -16,6 +16,7 @@ use App\Framework\Filesystem\FileScanner;
use App\Framework\Filesystem\FileSystemService; use App\Framework\Filesystem\FileSystemService;
use App\Framework\Filesystem\ValueObjects\FilePattern; use App\Framework\Filesystem\ValueObjects\FilePattern;
use App\Framework\Logging\Logger; use App\Framework\Logging\Logger;
use App\Framework\Logging\ValueObjects\LogContext;
use App\Framework\Performance\MemoryMonitor; use App\Framework\Performance\MemoryMonitor;
use Generator; use Generator;
use Throwable; use Throwable;
@@ -129,7 +130,7 @@ final readonly class FileProcessor implements DiscoveryProcessor
} catch (Throwable $e) { } catch (Throwable $e) {
$this->logger?->warning( $this->logger?->warning(
"Failed to process file {$file->getPath()->toString()}: {$e->getMessage()}" "Failed to process file {$file->getPath()->toString()}: {$e->getMessage()}", LogContext::withException($e)
); );
} }
} }