2 Commits

Author SHA1 Message Date
d10ee33215 better format for mysql 2025-06-06 17:55:58 -04:00
5134630525 Correct Exceptions 2025-06-06 17:37:42 -04:00
4 changed files with 37 additions and 9 deletions

View File

@ -1,6 +1,7 @@
<?php
namespace Incoviba\Common\Implement\Log\Formatter;
use Throwable;
use Monolog\Formatter\JsonFormatter;
use Monolog\LogRecord;
@ -13,7 +14,35 @@ class PDO extends JsonFormatter
public function format(LogRecord $record): string
{
if (is_a($record->message, Throwable::class)) {
$exception = $record->message;
$message = $this->normalizeException($exception);
$context = $record->context;
$context['exception'] = $exception;
if ($exception->getPrevious()) {
$context['previous'] = $this->walkException($exception);
}
$new_record = new LogRecord(
$record->datetime,
$record->channel,
$record->level,
json_encode($message),
$context,
$record->extra
);
$record = $new_record;
}
$normalized = $this->normalize($record, $this->maxNormalizeDepth);
return $normalized['message'];
}
protected function walkException(Throwable $exception, int $depth = 0): array
{
$output = [];
$currentDepth = $depth;
while ($previous = $exception->getPrevious() and $currentDepth < $this->maxNormalizeDepth) {
$output []= $this->normalizeException($previous);
}
return $output;
}
}

View File

@ -6,6 +6,7 @@ use DateTimeZone;
use InvalidArgumentException;
use OutOfRangeException;
use Psr\Log\LoggerInterface;
use Predis\Connection\ConnectionException;
use Incoviba\Common\Ideal;
use Incoviba\Common\Implement\Exception\EmptyRedis;
use Incoviba\Common\Implement\Exception\EmptyResult;
@ -36,7 +37,7 @@ class Job extends Ideal\Service
});
}
return array_map([$this, 'load'], $jobs);
} catch (EmptyRedis) {
} catch (ConnectionException | EmptyRedis) {
return [];
}
}

View File

@ -28,7 +28,7 @@ class Queue extends Ideal\Service
try {
$this->jobService->add($configuration);
return true;
} catch (Create $exception) {
} catch (Read $exception) {
$final = new Exception("Could not enqueue job", 0, $exception);
$this->logger->warning($final);
return false;
@ -82,12 +82,10 @@ class Queue extends Ideal\Service
}
public function run(?RequestInterface $request = null): bool
{
try {
$jobs = $this->jobService->getPending();
} catch (Read $exception) {
$final = new Exception("Could not get pending jobs", 0, $exception);
$this->logger->warning($final);
return false;
$jobs = $this->jobService->getPending();
if (count($jobs) === 0) {
$this->logger->debug("No pending jobs");
return true;
}
$errors = [];

View File

@ -2,8 +2,8 @@
namespace Incoviba\Service;
use Exception;
use Predis\Connection\ConnectionException;
use Psr\Log\LoggerInterface;
use Predis\Connection\ConnectionException;
class Job
{